Поле даты PHPExcel не соответствует исходной таблице

Это то, что находится в моей таблице:

12/04/2011 8:56:17 pm (xls dateserial = 40645.87242) 

это мой код, который я использую, чтобы извлечь дату и преобразовать в строку даты в PHP:

 $txn_date_xls = $sheet->getCell("H$row")->getValue(); echo "Txn Date (original): $txn_date_xls<br />"; $txn_date = PHPExcel_Shared_Date::ExcelToPHP($txn_date_xls); echo "Txn Date: ".date('Ymd H:i:s', $txn_date)."<br />"; 

Это результат моего скрипта:

 Txn Date (original): 40644.55783637732 Txn Date: 2011-04-11 13:23:17 

Серийный номер даты не соответствует исходной электронной таблице. Итак, я пытаюсь определить, является ли это ошибкой с PHPExcel или я пропустил настройку или что-то еще, что мне нужно сделать, прежде чем извлекать датировку из ячейки. Возможно, проблема с часовым поясом?

К сожалению, я еще не очень хорошо знаком с библиотекой PHPExcel.

Я не уверен в этом, но …

Дата функции () в PHP зависит от настройки часового пояса сервера.

PHPExcel_Shared_Date :: ExcelToPHP () предполагает, что указанная дата – GMT и соответственно возвращает время Unix.

Поэтому постарайтесь установить GMT / UTC для часового пояса PHP в начале сценария (используя date_default_timezone_set () )

 date_default_timezone_set('UTC'); 

или как это (с помощью ini_set () )

 ini_set('date.timezone', 'UTC'); 

Кроме того, попробуйте использовать gmdate () вместо date () , иначе вы можете получить смещение за 1 день .

Полезная ссылка:

определять

 date_default_timezone_set(YOUR_TIME_ZONE); 

Измените эту строку:

 date('Ymd H:i:s', $txn_date) 

чтобы:

  PHPExcel_Style_NumberFormat::toFormattedString($txn_date_xls, 'Ymd H:i:s')