Проблема чтения даты в PHP, я получил номер, а не дату - PullRequest
0 голосов
/ 04 октября 2018

Я хочу прочитать даты из файла Excel, но когда я печатаю даты на экране, я вижу только одно число вместо даты, почему?

Файл Excel:

Excel file

Результат:

Result

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

В Excel даты обрабатываются как числа, причем число представляет число дней после 31 декабря 1899 года. Таким образом, день 1 - 1 января 1900 года, а день 43102 - 3 января 2018 года. Но подождите ... ваши данные указывают на 2 января 2018 года!Оказывается, Microsoft считает, что 1900 год был високосным, и поэтому день 60 - это 29 февраля 1900 года, когда в реальном мире это было на самом деле 1 марта. В любом случае, это означает, что для дат после 28 февраля 1900 года необходимо вычесть одинот номера дня, чтобы получить правильную дату.Таким образом, чтобы преобразовать число дня Excel в дату в PHP, используйте следующий код:

$dayval = 43102;    // you would read from your file here
$date = new DateTime('1899-12-31');
$date->modify("+$dayval day -1 day");
echo $date->format('Y-m-d');

Вывод:

2018-01-02
0 голосов
/ 04 октября 2018

Пожалуйста, используйте эту формулу, чтобы изменить дату Excel на дату Unix, затем вы можете использовать «gmdate», чтобы получить реальную дату в PHP:
UNIX_DATE = (EXCEL_DATE - 25569) * 86400
и преобразовать дату Unix в дату Excel,используйте эту формулу: EXCEL_DATE = 25569 + (UNIX_DATE / 86400)
После помещения этой формулы в переменную вы можете получить реальную дату в PHP, используя этот пример:
$UNIX_DATE = ($EXCEL_DATE - 25569) * 86400; echo gmdate("d-m-Y H:i:s", $UNIX_DATE);
86400 - это количество секунд в дне = 24* 60 * 60. 25569 - это количество дней с 1 января 1900 года по 1 января 1970 года. Базовая дата Excel - 1 января 1900 года, а Unix - 1 января 1970 года. Значения даты в UNIX указаны в секундах с 1 января 1970 года.(полночь 31 декабря 1969 г.)Таким образом, чтобы преобразовать из Excel, вы должны вычесть количество дней, а затем преобразовать в секунды

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...