Ответ 1
Это правильные даты, только во внутреннем формате Excel: количество дней с 1 января 1900 года (с учетом 1900 года - високосного года). Очевидно, что что-то в классе simplexlsx преобразует значение даты xlsx во внутренний формат Excel.
Я раньше не сталкивался с симплекссом (что меня удивляет, поскольку я думал, что знаю все библиотеки чтения/записи файлов Excel для PHP)... но где-то в коде должен быть метод обработки этого преобразования, поэтому Я бы предположил, что также будет метод обратного (преобразование метки времени Excel в PHP)
ИЗМЕНИТЬ
Метод, который вы хотите, находится в коде:
function unixstamp( $excelDateTime ) {
$d = floor( $excelDateTime ); // seconds since 1900
$t = $excelDateTime - $d;
return ($d > 0) ? ( $d - 25569 ) * 86400 + $t * 86400 : $t * 86400;
}
Я не гарантирую, что он точный
ИЗМЕНИТЬ ДАЛЬШЕ
function unixstamp( $excelDateTime ) {
$d = floor( $excelDateTime ); // seconds since 1900
$t = $excelDateTime - $d;
return ($d > 0) ? ( $d - 25569 ) * 86400 + $t * 86400 : $t * 86400;
}
$dateVal = 40941;
$unixDateVal = unixstamp($dateVal);
var_dump($unixDateVal);
echo date('d-M-Y',$unixDateVal);
дает
float 1328140800
который выглядит замечательно как значение временной отметки unix в правильном диапазоне для этого года и достаточно уверенно:
02-Feb-2012
Итак, похоже, что это работает со мной