Laravel PHPExcel 将日期转换为双精度
Posted
技术标签:
【中文标题】Laravel PHPExcel 将日期转换为双精度【英文标题】:Laravel PHPExcel convert date into double 【发布时间】:2017-04-08 12:35:50 【问题描述】:我尝试使用 Laravel 5.4 导入一个带有由 phpExcel 格式化为 DATE 的列的 excel 文件。 PHPExcel 将文件和输出日期读取为双数。 PHP 的 date() 函数无法转换成日期导入数据库。
有人遇到同样的问题吗?
更新:这是我的代码
Excel::filter('chunk')
->selectSheetsByIndex(1)
->load(config('excel.import.storage').$fileName)
->chunk(1000, function($rows)
foreach ($rows as $i=>$row)
dd($row->toArray());
);
Excel 列中的日期是 03/03/2017。输出为 42797.0 所以,date() 函数不能工作。
【问题讨论】:
至少提供了您尝试过的东西?还提供一个示例,说明您通过 PHPExcel 阅读本专栏后得到的内容。 Excel date conversion using PHP Excel的可能重复 【参考方案1】:在内部,MS Excel 将日期存储为浮点数/双精度数、序列化时间戳(类似于 Unix 时间戳,但计算天数而不是秒数,并且具有不同的基准日期)。我对 laravel 的 Maatwebsite 包装器不够熟悉,无法解释为什么 ->formatDates(true)
没有将该时间戳转换为格式化的日期/时间,但 PHPExcel 确实提供了在 Excel 时间戳和格式化的日期/时间之间转换的本机功能(或者实际上到 \PHPExcel_Shared_Date
类中的 unix 时间戳或 DateTime 对象。
【讨论】:
对不起! “->formatDates(true)”是我在发布代码之前没有删除的错误。【参考方案2】:感谢你们的 cmets。我发现自己的答案比我想象的要容易。您认为以下导入 Excel 文件的代码具有日期列。
Excel::selectSheetsByIndex(1)
->load(config('excel.import.storage').$fileName, function ($reader)
$rows = $reader->all();
dd($rows[0]->ngay->format('Y-m-d'));
);
结果将打印为您的格式字符串 d-m-Y, m-d-Y, ...
【讨论】:
以上是关于Laravel PHPExcel 将日期转换为双精度的主要内容,如果未能解决你的问题,请参考以下文章