php / php/php-src

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

Ouverte
#21,616 3 commentaires 0 réactions 1 personne assignée Voir sur GitHub

Personne n'a encore pris cette issue.

Bug Extension: date Status: Verified
Langage dominant
C
Étoiles
40.4k
Forks
8.1k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

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

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.