Bug #80896 [Com]: Daylight time mishandled for America/Havana and Asia/Tehran timezones
Edit report at https://bugs.php.net/bug.php?id=80896&edit=1
ID: 80896
Comment by: ctiancheng at fb dot com
Reported by: ctiancheng at fb dot com
Summary: Daylight time mishandled for America/Havana and
Asia/Tehran timezones
Status: Feedback
Type: Bug
Package: Date/time related
PHP Version: 8.0Git-2021-03-22 (Git)
Block user comment: N
Private report: N
New Comment:
I find the behavior to be inconsistent with other timezones.
For example in https://3v4l.org/KAl19, with
America/Los_Angeles, 3/13/21 0:00 -> 3/14/21 0:00, with daylight time change happening on 3/14.
I think we assume ->add(new DateInterval("P1D")) would do 0:00am => 0:00am of next
day, rather than just adding 24 hours?
Previous Comments:
------------------------------------------------------------------------
[2021-03-22 19:18:53] requinix@php.net
Looks right to me. https://3v4l.org/7sCi5
------------------------------------------------------------------------
[2021-03-22 19:01:19] ctiancheng at fb dot com
Description:
------------
---
From manual page: https://php.net/timezones.america
---
America/Havana and Asia/Tehran are two supported timezones listed from the documentation. However,
The DateTime are not handled correctly during daylight time transition.
This happens when doing $dt->add(new DateInterval('P1D'));
On e.g. 2021/03/14 for America/Havana
On e.g. 2021/03/21 for Asia/Tehran
Test script:
---------------
// http://sandbox.onlinephpfunctions.com/code/0650352a9684872c8dcfff00a64b11660a56eba8
$local_timezone_name = 'America/Havana';
$timestamp = 1615611600; // local time 3/13/21 0:00
$time = (new DateTime())->setTimestamp($timestamp)
->setTimezone(new DateTimeZone($local_timezone_name));
$time->add(new DateInterval('P1D')); // local time 03/13/21 1:00
// http://sandbox.onlinephpfunctions.com/code/623d5587f5453dd487492e5fde64cc836a84dcd9
$local_timezone_name = 'Asia/Tehran';
$timestamp = 1616272200; // local time 3/21/21 0:00
$time = (new DateTime())->setTimestamp($timestamp)
->setTimezone(new DateTimeZone($local_timezone_name));
$time->add(new DateInterval('P1D')); // local time 03/22/21 1:00
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=80896&edit=1
Thread (6 messages)