Это то, что находится в моей таблице:
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')