代碼塊應該能夠自己說話。時區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 關注
- 106 瀏覽
添加回答
舉報
0/150
提交
取消