У меня есть программа PHP, которая читает таблицы Excel с помощью Php Excel. В листе Excel есть только один столбец, отформатированный как «гггг-мм-дд чч-мм-сс».
Когда я читаю этот лист Excel с помощью Php Excel, все работает нормально, пока я не достигну даты выше 2038 года.
Теперь я прочитал проблему 2038 года и подумал, что смогу ее обнаружить и вернуть пользователю сообщение об ошибке, когда они введут дату> = 2038, но я не смогу, так как даты неверны.
Что еще хуже, они приходят как действительные даты.
Вот пример различных значений, которые я пробовал (это массив после чтения в PHP):
INPUT == Exactly as written in excel sheet
OUTPUT == The output the PHPExcel Reader returns in the array
OUTPUT DATE INPUT DATE
----------------------------------------------
2036-02-13 02:42:08 -- 2988-10-31 00:00:00
----------------------------------------------
2028-08-16 11:03:28 -- 2300-10-31 00:00:00
----------------------------------------------
1902-09-24 17:31:44 -- 2038-10-31 00:00:00
----------------------------------------------
2037-10-31 00:00:00 -- 2037-10-31 00:00:00
----------------------------------------------
Вывод кажется совершенно случайным, но все же действительной датой.
Я хочу быть в состоянии поймать даты выше 2038 года, чтобы вернуть сообщение пользователю.
Я использую PHP 32 бит.
Это код, который читает его в массив и печатает его:
$objPHPExcel = PHPExcel_IOFactory::load ( $this->pathToExcelFile);
$sheetData = $objPHPExcel->getActiveSheet ()->toArray ( null, true, true, false );
print_r ($sheetData, true);
Идеи?
Задача ещё не решена.
Других решений пока нет …