Bug #81560 [Ver->Wfx]: DateTime-Add($interval) endless loop for dst
| From: | derick@php.net | Date: | Fri, 13 May 2022 15:45:20 +0000 |
| Subject: | Bug #81560 [Ver->Wfx]: DateTime-Add($interval) endless loop for dst | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-241506@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=81560&edit=1
ID: 81560
Updated by: derick@php.net
Reported by: mihailovb at gmail dot com
Summary: DateTime-Add($interval) endless loop for dst
-Status: Verified
+Status: Wont fix
Type: Bug
Package: Date/time related
Operating System: CentOS7 (and others)
PHP Version: 7.4.25
Assigned To: derick
Block user comment: N
Private report: N
New Comment:
Sorry, we can't back port this because that would require merging in an older version of
timelib, which also introduces new features and subtly changes behaviour that we can't have in
patch releases.
Previous Comments:
------------------------------------------------------------------------
[2021-12-03 08:41:45] mihailovb at gmail dot com
Ah, I hope it will be backported, cause after looking into the project and the libraries that are
being used, not sure if I'd be able to upgrade to 8.1.
On the bright side, we'd have something less than an year to try and do it.
------------------------------------------------------------------------
[2021-10-28 11:23:30] cmb@php.net
This is apparently fixed as of PHP 8.1.0[1]; I'm not sure whether
the fix will be backported.
[1] <https://3v4l.org/1df2R>
------------------------------------------------------------------------
[2021-10-28 10:37:34] mihailovb at gmail dot com
Description:
------------
PHP 7.4.25 (CentOS), 7.4.3(Ubuntu20.04), 7.2.34(Ubuntu20.04)
It goes into an endless loop when trying to add a 15M interval only when working with
"negative" timezones. Doesn't happen for European "pozitive" timezones
Test script:
---------------
<?php
$timezoneDST = new DateTimeZone('America/New_York');
$date = new DateTime("2020-11-01", $timezoneDST);
$dateInterval = new DateInterval('PT15M');
$counter = 0;
while($counter < 500){
$date->add($dateInterval);
$counter++;
}
var_dump($date);
Expected result:
----------------
class DateTime#1 (3) {
public $date =>
string(26) "2020-11-06 04:00:00.000000"
public $timezone_type =>
int(3)
public $timezone =>
string(16) "America/New_York"
}
Actual result:
--------------
class DateTime#2 (3) {
public $date =>
string(26) "2020-11-01 01:00:00.000000"
public $timezone_type =>
int(3)
public $timezone =>
string(16) "America/New_York"
}
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=81560&edit=1