【问题标题】:Convert DateTime to ISO 8601 DateTime Format with timezone将 DateTime 转换为带时区的 ISO 8601 DateTime 格式
【发布时间】:2018-04-03 07:09:52
【问题描述】:
如何将我的时间从 2010-12-30 23:21:46 转换为 ISO 8601 日期格式?
我尝试了$datetime->format(DateTime::ATOM) 和date(DATE_ISO8601, strtotime('2010-12-30 23:21:46')),它们转换为 ISO8601 格式,如2016-12-31T09:47:50+0000。但我需要的是2018-02-19T05:43:59.753000Z 格式。如何使用 PHP 实现??
【问题讨论】:
标签:
php
datetime
timezone
iso8601
【解决方案1】:
如果您希望输出 Zulu/UTC/GMT 时区的格式,那么您必须先转换时区,因为我不知道您当前的设置是在哪个时区。
$dt = new DateTime('2010-12-30 23:21:46');
$dt->setTimezone(new DateTimeZone('UTC'));
echo $dt->format('Y-m-d\TH:i:s.u\Z');
demo
而 ISO-8601 是一个具有多种格式变化的标准:
2018-04-03
2018-04-03T05:20:03+00:00
2018-04-03T05:20:03Z
20180403T052003Z
2018-W14
2018-W14-2
- ...
这些都是有效的 ISO-8601 格式。阅读更多here。