代码块应该能够自己说话。时区Europe/Berlin被检测为+02:00但行为类似+01:00。当我专门用作+02:00时区时,它按预期工作。谁能向我解释这里发生了什么?>>> $timezone = new DateTimeZone('Europe/Berlin')=> DateTimeZone {#2356 timezone: Europe/Berlin (+02:00), }>>> $timestamp = DateTime::createFromFormat('Y-m-d\TH:i:s.uO', '2020-02-29T07:30:00.000+0100')=> DateTime @1582957800 {#2349 date: 2020-02-29 07:30:00.0 +01:00, }>>> $timestamp->setTimezone($timezone)=> DateTime @1582957800 {#2349 date: 2020-02-29 07:30:00.0 Europe/Berlin (+01:00), }>>> $timezone = new DateTimeZone('+02:00')=> DateTimeZone {#2371 timezone: +02:00, }>>> $timestamp = DateTime::createFromFormat('Y-m-d\TH:i:s.uO', '2020-02-29T07:30:00.000+0100')=> DateTime @1582957800 {#2364 date: 2020-02-29 07:30:00.0 +01:00, }>>> $timestamp->setTimezone($timezone)=> DateTime @1582957800 {#2364 date: 2020-02-29 08:30:00.0 +02:00, }
1 回答
烙印99
TA贡献1829条经验 获得超13个赞
+01:00
柏林在标准时间(英文称为中欧时间或 CET)和+02:00
夏令时(英文称为中欧夏令时或 CEST)期间 使用 UTC 偏移量。
在第一个示例中,您将柏林时间应用于2020-02-29
CET 生效的时间,而不是 CEST。因此,您会+01:00
在结果中看到一个偏移量。这是对的。
在第二个示例中,您没有应用柏林时间,而是使用固定偏移量为 的应用时区+02:00
,因此您会在结果中看到这一点。
- 1 回答
- 0 关注
- 91 浏览
添加回答
举报
0/150
提交
取消