如何格式化原子日期时间

发布于 2024-08-10 21:59:00 字数 312 浏览 7 评论 0原文

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

2009-11-04T19:55:41Z

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

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

我尝试使用 preg_replace() 删除 TZ< /code>,但仍然无法让它工作。

I'm getting dates from feed in this format:

2009-11-04T19:55:41Z

I'm trying to format it using the date() function in PHP, but I get an error saying:

date() expects parameter 2 to be long, object given in /bla/bla.php

I tried using preg_replace() to remove the T and the Z, but still can't get it to work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

久伴你 2024-08-17 21:59:00

strtotime 是一个很棒的日期转换函数格式为 Unix 时间戳。

这会给你你想要的:

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

strtotime is a wonderful function for converting date formats to Unix timestamps.

This will give you what you're after:

date('my format here', strtotime('2009-11-04T19:55:41Z'));
风吹雪碎 2024-08-17 21:59:00

有关(如评论中提到的

\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');

What about

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

or

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

or both

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

or even better

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

or with time zone (as mentioned in comments)

$dto = \DateTime::createFromFormat(
    \DateTime::ATOM,
    $ticketUpdatedAt,
    new \DateTimeZone('UTC')
);
$ticketUpdatedDate = $dto->format('Y-m-d H:i:s');
め可乐爱微笑 2024-08-17 21:59:00

尝试使用 strptime

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

Try using strptime:

$date = strptime($str, "Y-m-d\TH:i:s\Z");
唔猫 2024-08-17 21:59:00

您可以使用 strtotime 函数。

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

You can use the strtotime function.

echo date('Y-M-D', strtotime($feedDate));
一抹淡然 2024-08-17 21:59:00

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

您也许可以使用以下命令解析它

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

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

That is the standard ISO 8601 combined date and time format given in UTC (hence the Z).

You might be able to parse it using

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

or, if that fails (shouldn't, if PHP claims to understand ISO 8601), you can replace the Z by "+00:00".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文