我正在使用PHPExcel并尝试从单元格中获取日期值,但由于某种原因,它们会给我错误的日期。
$dt_column = $obj_sheet->getCell('A1');
$unix_date = PHPExcel_Shared_Date::ExcelToPHP($dt_column);
$date = gmdate('Y-m-d 00:00:00', $unix_date);
该文件采用.xlsx格式。 LibreOffice Calc中单元格的值显示为1/7/2017,(2017年7月1日关于公式输入,不知道在PHPExcel日期处理它是否有任何实际差异)。
$dt_column
的返回值为42917。
值归因于至$unix
_日期为-2208988800。
{strong>值归因至$date
为2036-02-07 00:00:00。
我尝试使用公式UNIX_DATE = (EXCEL_DATE - 25569) * 86400
手动将Excel日期值转换为Unix日期值,正如您想象的那样,结果相同。
PHPExcel_Shared_Date::$_excelBaseDate
设置为CALENDAR_WINDOWS_1900
。
如何获得正确的日期?
回答
答案 0 :(得分:0)
Excel自19 1/1/1900起计算日期作为x的加/减。 所以你的约会对象是1913年1月1日42917天。您最好用它来计算正确的日期。
示例:
$d = strtotime("1900-1-1 + ".$dt_column." days");
$ d将是UNIX格式的时间戳,可以与date()函数一起使用来格式化。
祝你好运!