Bug #80896 [Com]: Daylight time mishandled for America/Havana and Asia/Tehran timezones

From: Date: Mon, 22 Mar 2021 19:30:32 +0000
Subject: Bug #80896 [Com]: Daylight time mishandled for America/Havana and Asia/Tehran timezones
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-232922@lists.php.net to get a copy of this message
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)

« previous php.bugs (#232922) next »