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

Jay*_*att 1 php datetime

我正在开发一个从不同站点导入多个 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'
Run Code Online (Sandbox Code Playgroud)

我需要将上述格式转换为简单的格式,如'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
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助。

Ama*_*ali 5

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";
}
Run Code Online (Sandbox Code Playgroud)

输出:

2013-12-04
2014-04-12
2014-04-12
2014-03-14
Run Code Online (Sandbox Code Playgroud)

演示