为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 是否检测到错误的柏林时区?

PHP 是否检测到错误的柏林时区?

PHP
一只名叫tom的猫 2023-03-04 14:16:11
代码块应该能够自己说话。时区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-29CET 生效的时间,而不是 CEST。因此,您会+01:00在结果中看到一个偏移量。这是对的。

在第二个示例中,您没有应用柏林时间,而是使用固定偏移量为 的应用时区+02:00,因此您会在结果中看到这一点。


查看完整回答
反对 回复 2023-03-04
  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信