【问题标题】:Php Convert date time like "2017-01-10T18:00:00.000Z" to standard time [duplicate]Php将日期时间如“2017-01-10T18:00:00.000Z”转换为标准时间[重复]
【发布时间】:2026-02-19 20:30:01
【问题描述】:

我收到来自其他服务器的响应,其日期时间如下所示,

"2017-01-10T18:00:00.000Z"

我想像这样将其转换为标准日期时间,我该怎么做?

"2017-01-10 18:00:00"

有这样做的标准方法吗?还是我依赖​​正则表达式来解码它?

注意:

大多数人建议我使用下面的函数

echo date("Y-m-d H:i:s", strtotime("2017-01-10T18:00:00.000Z")) . "\n";**

但是我从这个函数得到的输出是“2017-01-11 05:00:00”而不是“2017-01-11 18:00:00”,为什么?我要如我所说“2017-01-10 18:00:00”

【问题讨论】:

  • 你可以使用DateTime((new DateTime('formatYouHave'))->format('formatYouWant')
  • …或 Carbon 包。
  • 看起来有人回答了? *.com/questions/5393847/…
  • @S.Imp 这是一个 Java 问题。

标签: php date


【解决方案1】:

你可以使用date('Y-m-d h:i:s', strtotime($yourDate));
希望对你有帮助:)

【讨论】:

【解决方案2】:

您可以使用 php 中的 date_time() 函数。

您应该查看此链接以解决您的问题。

PHP Convert ISO date to more readable format?

【讨论】:

    【解决方案3】:

    嗯,好的...在 php 中,以 Z 结尾的长时间戳可以转换为带有 strototime 的 unix 时间戳,然后使用 date 函数返回日期

    echo date("Y-m-d H:i:s", strtotime("2017-01-10T18:00:00.000Z")) . "\n";
    

    警告:您服务器上的当前时区设置可能会导致时间被调整

    【讨论】:

    • 在我的 Ubuntu 工作站上运行良好: php -r 'echo date("Y-m-d H:i:s", strtotime("2017-01-10T18:00:00.000Z")) 。 "\n";' 2017-01-10 10:00:00 -- 尽管它似乎假设原始时间是 UTC 并根据我的时区进行调整。
    • 2017-01-11 05:00:00 是我得到的输出错误,预计 18:00
    • 如果我没记错的话,第一个日期时间中的最后一个“Z”是表示 UTC 时间的时区指示符。当您使用 date 函数时,它将 UTC 时间转换为您的本地时区,这说明了两次不同的时间。换句话说,2017-01-10T18:00:00.000Z 表示 UTC 时间,当它使用 date 函数转换时,结果将转换为 PHP 服务器的本地时区。
    • 时间以 UTC(协调世界时)表示,带有一个特殊的 UTC 指示符(“Z”)。见w3.org/TR/NOTE-datetime