php / php/php-src

DateTime::modify('-1 second') goes 59 minutes later on DST

オープン
#21,616 コメント 3 件 リアクション 0 件 担当者 1 名 GitHub で見る

まだ誰も着手していません。

Bug Extension: date Status: Verified
主要言語
C
スター
40.4k
フォーク
8.2k
平均マージ
2日 13時間
マージ済み PR(30日)
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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。