Bug #80896 [Fbk->Nab]: Daylight time mishandled for America/Havana and Asia/Tehran timezones

From: Date: Mon, 22 Mar 2021 19:39:50 +0000
Subject: Bug #80896 [Fbk->Nab]: Daylight time mishandled for America/Havana and Asia/Tehran timezones
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-232923@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
 Updated by:         requinix@php.net
 Reported by:        ctiancheng at fb dot com
 Summary:            Daylight time mishandled for America/Havana and
                     Asia/Tehran timezones
-Status:             Feedback
+Status:             Not a bug
 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.

Tell that to the people who decide at what time their region's clocks should advance.

Cuba and Tehran do it at midnight. Most of the US does it at 2am. Other places in the world advance
at 1am.
https://en.wikipedia.org/wiki/Daylight_saving_time_by_country

Dates are hard.


Previous Comments:
------------------------------------------------------------------------
[2021-03-22 19:30:32] ctiancheng at fb dot com

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?

------------------------------------------------------------------------
[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 (#232923) next »