使用PHPExcel从单元格获取错误的日期

时间:2017-12-27 12:42:12

标签: php excel date unix phpexcel

我正在使用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

如何获得正确的日期?

回答

1 个答案:

答案 0 :(得分:0)

Excel自19 1/1/1900起计算日期作为x的加/减。 所以你的约会对象是1913年1月1日42917天。您最好用它来计算正确的日期。

示例:

$d = strtotime("1900-1-1 + ".$dt_column." days");

$ d将是UNIX格式的时间戳,可以与date()函数一起使用来格式化。

祝你好运!