DateTime::modify('-1 second') goes 59 minutes later on DST
未关闭
还没有人认领这个 Issue。
Bug
Extension: date
Status: Verified
- 主要语言
- C
- 星标
- 40.4k
- 派生
- 8.1k
- 平均合并
- 2 天 13 小时
- 30 天内合并 PR
- 96
描述
Description
The following code:
<?php
echo (new DateTime('2025-03-30 00:59:59', new DateTimeZone('Europe/London')))
->modify('+1 second')
->modify('-1 second')
->format('Y-m-d H:i:s.u e T');
Resulted in this output:
2025-03-30 02:59:59.000000 Europe/London BST
But I expected this output instead:
2025-03-30 00:59:59.000000 Europe/London GMT
Which is also the output we get when executing (since PHP 8.1, before that add/sub interval and modify gave the same output):
echo (new DateTime('2025-03-30 00:59:59', new DateTimeZone('Europe/London')))
->add(new DateInterval('PT1S'))
->sub(new DateInterval('PT1S'))
->format('Y-m-d H:i:s.u e T');
PHP Version
PHP 8.5.3
Possibly related to
#15880
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
评估
这个 Issue 还没有评估数据。