我以这种格式从Feed中获取日期:
2009-11-04T19:55:41Z
我正在尝试使用PHP中的date()
函数对其进行格式化,但我收到错误消息:
date()期望参数2为long,即/bla/bla.php中给出的对象
我尝试使用preg_replace()
删除T
和Z
,但仍然无法使其发挥作用。
答案 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));