我最近在PHP中玩日期格式,DATE_RFC7231
中硬编码的GMT
时区让我很困惑。
我有两个相同的日期格式不同的例子,但是,即使输入是相同的,输出不同,因为时区的差异!所以,小时是不是铸造成比例的给定时区,它显示混乱的结果。
echo DateTime::createFromFormat(DATE_ATOM, '2023-02-15T06:44:41+08:00')->format(DATE_ATOM); //2023-02-15T06:44:41+08:00
echo DateTime::createFromFormat(DATE_ATOM, '2023-02-15T06:44:41+08:00')->format(DATE_RFC7231); //Wed, 15 Feb 2023 06:44:41 GMT
这是有意的,不管为Datetime对象设置的时区如何,总是显示GMT
吗?还是我遗漏了RFC 7231格式的一些基本内容?
1条答案
按热度按时间5gfr0r5j1#
实际上,现在我看到它是从同一个输入生成
06:44:41+08:00
和06:44:41 GMT
,这有点不对。然而,真正错误的是,认为格式字符串会对DateTime对象执行转换,常量
DATE_RFC7231
只是字符串"D, d M Y H:i:s \G\M\T"
,它将字符串GMT
硬编码为格式。解决方案是在格式化之前将时区设置为GMT,如下所示:
输出: