You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中UTC高精度时间格式转换失败,求解决方案

问题解答

时间格式说明

你提到的2022-09-30T21:39:25.220185674Z属于ISO 8601标准的UTC时间格式:

  • T是日期与时间的分隔符
  • .220185674是纳秒级的时间精度(9位小数)
  • 末尾的Z表示该时间属于UTC时区(祖鲁时区)

转换失败原因

你使用strtotime()失败的核心原因是:该函数在处理带有9位小数的高精度ISO 8601时间时存在兼容性问题(PHP 7.3及更早版本对这种格式的支持有限),解析后返回false。而date()函数接收false时会将其当作时间戳0处理,最终输出Unix纪元初始时间(1970-01-01 01:00:00,这是时区偏移后的结果)。

正确转换方法

使用PHP的DateTime类可以完美支持这种高精度时间格式,示例代码如下:

方法1:直接解析并格式化(默认UTC时区)

$datetime = new DateTime('2022-09-30T21:39:25.220185674Z');
echo $datetime->format('Y-m-d H:i:s');
// 输出:2022-09-30 21:39:25

方法2:转换为指定时区(例如北京时间)

如果需要将UTC时间转换为本地时区,可通过setTimezone()调整:

$datetime = new DateTime('2022-09-30T21:39:25.220185674Z', new DateTimeZone('UTC'));
$datetime->setTimezone(new DateTimeZone('Asia/Shanghai'));
echo $datetime->format('Y-m-d H:i:s');
// 输出:2022-10-01 05:39:25

内容的提问来源于stack exchange,提问作者Lyra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:35:25