我正在尝试使用 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
或空字符串。
编辑:
文件多列中的日期格式示例:
请问我该怎么办?我做错了什么?
最佳答案
基本上date_create_from_format
(这是 Date::createFromFormat
的别名)可以创建各种格式的日期,特别是数字变体(就像您自己链接的答案中一样):
$date = date_create_from_format('d/m/Y', $data[7]);
// then turn it into the format you want, like Y-m-d:
// $mysqlDate = $date->format('Y-m-d');
// or assign it to your entity
$entity->setDateAmeoAmheo($date);
如果您有多种格式,则可以使用后备,因为 date_create_from_format
将在出错时返回 false
:
$date = date_create_from_format('d/m/Y', $data[7])
?: date_create_from-format('d/m/y', $data[7])
// and so on, if needed.
;
// rest as before
关于php - 使用 Symfony-php 将日期格式错误的 csv 导入 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64294457/