从Excel在PHP中将浮点数解析为日期时的Bool(false)结果

时间:2019-02-07 05:00:25

标签: php phpexcel

我必须更改Excel中的格式日期才能上传到db中。在excel中,该行已采用日期格式。

当我调试该行时,date的结果为float(43772)。然后,我尝试使用 date_create_from_format 更改格式。但是现在,日期的结果总是 bool(false)或错误: date_format()期望参数1为DateTimeInterface,给定布尔值。我的代码是这样的:

$column = 'A';
$row = 2;

while ($objexcel->getCell('A' . $row)->getValue() != '' && $objexcel 
>getCell('B' . $row)->getValue() != '') {

$tgl = $objexcel->getCell('D' . $row)->getValue();
$date = date_create_from_format('d/m/Y', $tgl);   /* here problem */
$update = date_format($date, 'Y-m-d');   /* here problem */

}

能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

该日期值不是Unix时间戳;这是MS Excel序列化的时间戳...您可以使用getFormattedValue()而不是getValue()来将其作为格式字符串读取(假设您在readDataOnly设置为false的情况下读取文件;或者可以使用{ ExcelToPHP()类中的{1}}和ExcelToPHPObject()方法可将其转换为unix时间戳或DateTime对象