当格式未知时创建日期/时间


Create date/time when the format is unknown

我正在开发一个小型应用程序,该应用程序从不同的站点导入多个CSV文件。每个网站都有自己的日期格式。以下是一些格式。

  '2013-12-04 11:32:21 +0000'
  '04/12/2014 +0000'
  '04/12/2014 +0000 11:32:21'
  'Fri Mar 14 18:19:26 +0000 2014'

我需要将以上格式转换为简单的格式,如'd-m'Y'。这里的问题是,格式事先不知道,我不能每次需要向系统添加新的CSV文件时都去更改代码。

有没有一种方法可以将所有这些格式转换为简单的格式?我在下面尝试过,但没有效果,也找不到其他解决方案。

  $date = DateTime::createFromFormat(strtotime('2013-12-04 11:32:21 +0000'), '2013-12-04 11:32:21 +0000'); 
  print_r($date->format('d-m-Y')); //Doesn't work

提前感谢您的帮助。

PHP了解许多日期格式。此处不需要使用DateTime::createFromFormat()。只需将您的日期字符串传递到DateTime结构,并在旅途中对其进行格式化:

示例:

$array = [
  '2013-12-04 11:32:21 +0000',
  '04/12/2014 +0000',
  '04/12/2014 +0000 11:32:21',
  'Fri Mar 14 18:19:26 +0000 2014',
];
foreach ($array as $datestr) {
    $dt = new DateTime($datestr);
    echo $dt->format('Y-m-d') . "'n";
}

输出:

2013-12-04
2014-04-12
2014-04-12
2014-03-14

演示

尝试

$date = new DateTime('2013-12-04 11:32:21 +0000');
echo $date->format('Y-m-d H:i:s'); //2013-12-04 11:32:21

阅读手册:-http://www.php.net/manual/en/datetime.format.php

如果您希望所有值都进行转换,请创建一个值数组,并在datetime中传递您的值