我正在尝试使用PHPExcel从excel中获取日期。但是我没有得到日期,我得到的字符串值不是1970年的秒数。
我尝试过的代码是
$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue());发布于 2013-10-30 14:26:50
尝试使用
$cell = $excel->getActiveSheet()->getCell('B' . $i);
$InvDate= $cell->getValue();
if(PHPExcel_Shared_Date::isDateTime($cell)) {
     $InvDate = date($format, PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 
}附注:
@DiegoDD:值得一提的是,$format是日期的理想格式。例如:
 $InvDate = date($format = "Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($InvDate)); 附注: 2019使用新版本的PhpOffice https://stackoverflow.com/a/45070205/426533查看answer @gabriel-lupu
发布于 2013-10-30 16:10:27
对于日期,getValue()应该返回一个浮点数,这是该日期/时间的Excel序列化时间戳值...我怀疑是您的trim()将其转换为string。实际值是自1900年1月1日(或1904年1月1日,取决于电子表格使用的日历)以来的天数。
调用getFormattedValue()或getCalculatedValue()而不是getValue()应根据单元格的数字格式掩码返回格式化为人类可读字符串的日期。
或者,谢尔盖的解决方案测试单元格是否具有日期/时间数字格式掩码,并调用适当的帮助器方法将该Excel序列化的时间戳转换为unix时间戳,然后使用普通的PHP date函数根据$format的值将其格式化为人类可读的格式。还有一个类似的助手方法PHPExcel_Shared_Date::ExcelToPHPObject(),它可以将Excel序列化的时间戳转换为PHP DateTime对象
发布于 2017-07-13 09:52:12
在新版本的库PhpOffice中,处理此问题的函数是excelToDateTimeObject,因此新的代码格式应为:
$cell = $excel->getActiveSheet()->getCell('B' . $i);
$InvDate= $cell->getValue();
if (PhpOffice\PhpSpreadsheet\Shared\Date::isDateTime($cell)) {
     $InvDate = PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($InvDate); 
}https://stackoverflow.com/questions/19674633
复制相似问题