-
Notifications
You must be signed in to change notification settings - Fork 8k
DateTime::modify('-1 second') goes 59 minutes later on DST #21616
Copy link
Copy link
Open
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
Reactions are currently unavailable