我以这种格式从提要中获取日期:
2009-11-04T19:55:41Z
我正在尝试使用date()
PHP 中的函数对其进行格式化,但出现错误消息:
date() 期望参数 2 很长,对象在 /bla/bla.php 中给出
我尝试使用preg_replace()
删除T
和Z
,但仍然无法使其正常工作。
strtotime
是一个将日期格式转换为 Unix 时间戳的绝妙功能。
这会给你你所追求的:
date('my format here', strtotime('2009-11-04T19:55:41Z'));
关于什么
\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');
或时区(如评论中所述)
$dto = \DateTime::createFromFormat(
\DateTime::ATOM,
$ticketUpdatedAt,
new \DateTimeZone('UTC')
);
$ticketUpdatedDate = $dto->format('Y-m-d H:i:s');
尝试使用strptime
:
$date = strptime($str, "Y-m-d\TH:i:s\Z");
您可以使用strtotime函数。
echo date('Y-M-D', strtotime($feedDate));
这是以 UTC 给出的标准 ISO 8601 组合日期和时间格式(因此是 Z)。
您也许可以使用解析它
DateTime::createFromFormat('c', '2009-02-03');
或者,如果失败(不应该,如果 PHP 声称理解 ISO 8601),您可以将 Z 替换为“+00:00”。