【发布时间】:2020-10-10 14:23:45
【问题描述】:
我正在尝试使用 symfony/php 将 csv 文件上传到我的 mysql 表。
...
while (($data = fgetcsv($handle, 0, ";")) !== false) {
$count++;
if ($count == 1) { continue; }
$entity = new Oasice();
$entity->setCentre($data[0]);
$entity->setAffaire($data[1]);
$entity->setTypeAffaire($data[2]);
$entity->setTypeDossier($data[3]);
$entity->setCommune($data[4]);
$entity->setCodeInsee($data[5]);
$entity->setMoaEr($data[6]);
$entity->setDateAmeoAmheo($data[7]); // date
$entity->setChargeAffaire($data[8]);
// a lot more column...
在这个文件中,我有十列日期格式为dd/mm/YYYY,这给与数据库的集成带来了问题。
我尝试了迄今为止我能找到的解决方案(例如:this),但没有任何结论。
例子
$date = date("Y-m-d", strtotime(str_replace('/', '-', $data[7])));
dump($date)
但我的结果通常是 01-01-1970 或 1970-01-01 或空字符串。
编辑:
文件多列中的日期格式示例:
请问我该怎么办?我做错了什么?
【问题讨论】:
-
你应该给我们一些例子,在你得到错误结果的情况下,你的日期在你的文件中是如何查看的。
-
日期都是这种格式: : 04/04/2018 04/09/2020 19/07/2017
-
你检查过$ data[7]在某些情况下是否为空吗?
-
我不清楚您使用的是什么 Doctrine 版本。但是,如果您将实体的
dateAmeoAmheo属性指定为Doctrine date column types 之一,您应该只给setDateAmeoAmheo提供一个DateTimeInterface实例,Doctrine 将为您管理适当的日期转换。因此,也许在将 csv 的日期值传递给您的实体之前将其转换为DateTime实例。 -
是的,$data[7] 有时是空的