【问题标题】:Getting the wrong date from cell using PHPExcel使用 PHPExcel 从单元格中获取错误的日期
【发布时间】:2018-06-08 02:41:03
【问题描述】:

我正在使用 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,(公式输入为01/07/2017,不知道在PHPExcel日期处理是否有实际区别)。

$dt_column返回值是 42917。

$unix_date 的价值是-2208988800。

$date价值是 2036-02-07 00:00:00。

我尝试使用公式 UNIX_DATE = (EXCEL_DATE - 25569) * 86400 手动将 Excel 日期值转换为 Unix 日期值,正如您想象的那样,结果相同。

PHPExcel_Shared_Date::$_excelBaseDate 设置为CALENDAR_WINDOWS_1900

我怎样才能得到正确的日期?

已回答

【问题讨论】:

  • $obj_sheet->getCell('A1'); 返回 A1 处的 Cell 对象,其中包含有关单元格的大量信息,包括格式和样式。如果你想要一个单元格的值,那么你需要使用$obj_sheet->getCell('A1')->getValue();
  • 操作,谢谢。我试图让它工作几个小时。

标签: php excel date unix phpexcel


【解决方案1】:

Excel 将日期计算为自 1900 年 1 月 1 日以来 x 的加法/减法。 所以你的日期是 1900 年 1 月 1 日之后的 42917 天。您最好使用它来计算正确的日期。

例子:

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

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

祝你好运!

【讨论】:

    猜你喜欢
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多