6

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

2009-11-04T19:55:41Z

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

date() 期望参数 2 很长,对象在 /bla/bla.php 中给出

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

4

5 回答 5

14

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

这会给你你所追求的:

date('my format here', strtotime('2009-11-04T19:55:41Z'));
于 2009-11-04T23:26:51.403 回答
12

关于什么

\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');
于 2013-03-19T20:07:27.483 回答
2

尝试使用strptime

$date = strptime($str, "Y-m-d\TH:i:s\Z");
于 2009-11-04T23:28:32.180 回答
1

您可以使用strtotime函数。

echo date('Y-M-D', strtotime($feedDate));
于 2009-11-04T23:26:43.737 回答
1

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

您也许可以使用解析它

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

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

于 2009-11-04T23:27:21.770 回答