如何在php中获取带有时区的ISO 8601格式的时间戳

12
根据 wix文档2014-04-16T11:16:27.930Z 是一个使用时区的ISO 8601格式时间戳。 快速查找发现,ISO 8601中的时间戳显示时区为 +time_interval(例如:+00:00)。
我尝试了 date('c'),它显示:2014-04-16T06:23:31+00:00
请问是否有人能告诉我如何显示2014-04-16T11:16:27.930Z的时间戳,而不是2014-04-16T06:23:31+00:00

如果其他方法都不行,你可以使用 date() 自己构建它,对吧? - Andresch Serj
没错,但如何以27.930Z的格式获取时间戳中的时区?谢谢。 - lomse
1
维基百科表示:如果时间是在UTC时区,直接在时间后面添加Z而不加空格。Z是零UTC偏移的区域标识符。因此,“09:30 UTC”表示为“09:30Z”或“0930Z”。 “14:45:15 UTC”将是“14:45:15Z”或“144515Z”。 - Andresch Serj
4
请执行 gmdate('Y-m-d\TH:i:s.u\Z'); - Glavić
@Glavić 你太棒了!谢谢。 - lomse
显示剩余3条评论
1个回答

14

根据维基百科上的ISO_8601文章,UTC偏移量可以定义为小时:分钟。定义为小时分钟的定义。

Z是零UTC偏移的区域标识符。 因此,“09:30 UTC”表示为“09:30Z”或“0930Z”。 “14:45:15 UTC”将是“14:45:15Z”或“144515Z”。

PHP日期方法将参数Z定义为

Z时区偏移以秒为单位。 UTC西部时区的偏移始终为负值,而UTC东部时区的偏移始终为正值。

因此,假设维基百科文章中提到的偏移量是以秒为单位的,则可以使用日期创建自己的ISO 8601。 例如,对于当前服务器时间/日期给出以下示例:

date('Y-m-d\TH:i:s.Z\Z', time());

另外,正如@AndrewIsOffline在评论中提到的那样,自PHP5以来,使用“c”也将为您提供ISO 8601日期:

date('c', time());

2
有点老了,但自从 PHP 5 开始,仅使用“c”作为日期格式将提供完整的 ISO 8601 格式化时间。 - AndrewIsOffline

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接