如何格式化原子日期时间

时间:2009-11-04 23:22:41

标签: php parsing datetime atom-feed

我以这种格式从Feed中获取日期:

2009-11-04T19:55:41Z

我正在尝试使用PHP中的date()函数对其进行格式化,但我收到错误消息:

  

date()期望参数2为long,即/bla/bla.php中给出的对象

我尝试使用preg_replace()删除TZ,但仍然无法使其发挥作用。

5 个答案:

答案 0 :(得分:12)

strtotime是将日期格式转换为Unix时间戳的绝佳功能。

这将为您提供您所追求的目标:

date('my format here', strtotime('2009-11-04T19:55:41Z'));

答案 1 :(得分:9)

怎么样?
\DateTime::createFromFormat(\DateTime::ATOM, $AtomDate); // converting Atom date to object

date(\DateTime::ATOM, $timestamp); // formatting timestamp to Atom time

或两者

$dto = \DateTime::createFromFormat(\DateTime::ATOM, $AtomDate);
date('d-M-Y H:i:s', $dto->getTimestamp()); // formatting Atom date to anything you want

甚至更好

$dto = \DateTime::createFromFormat(\DateTime::ATOM, $AtomDate);
$formattedDate = $dto->format('d-M-Y H:i:s');

答案 2 :(得分:2)

尝试使用strptime

$date = strptime($str, "Y-m-d\TH:i:s\Z");

答案 3 :(得分:1)

这是UTC中给出的标准ISO 8601组合日期和时间格式(因此是Z)。

您可以使用

解析它
DateTime::createFromFormat('c', '2009-02-03');

或者,如果失败(不应该,如果PHP声称理解ISO 8601),您可以用“+00:00”替换Z。

答案 4 :(得分:0)

您可以使用strtotime功能。

echo date('Y-M-D', strtotime($feedDate));