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

时间:2014-05-02 07:24:53

标签: 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'

我需要将上述格式转换为简单格式,例如'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

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

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

Demo

答案 1 :(得分:2)

$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你的值