Bug #80995 [Opn->Nab]: Europe DateTimeZone bug in specific DateTime interval
Edit report at https://bugs.php.net/bug.php?id=80995&edit=1
ID: 80995
Updated by: cmb@php.net
Reported by: loic dot geny at gmail dot com
Summary: Europe DateTimeZone bug in specific DateTime
interval
-Status: Open
+Status: Not a bug
Type: Bug
Package: Date/time related
Operating System: Ubuntu 20.04.2 LTS
PHP Version: 7.4.16
-Assigned To:
+Assigned To: cmb
Block user comment: N
Private report: N
New Comment:
See <https://3v4l.org/q9cXH> for a reproducer which
avoids the Etc
timezone, IntlTimeZone, and also prints the time. The results are
expected, since on June, 14th there was a Time Zone Change[1].
[1] <https://www.timeanddate.com/time/change/france/paris?year=1940>
Previous Comments:
------------------------------------------------------------------------
[2021-04-30 15:16:22] cmb@php.net
Derick is referring to the date.timezone in php.ini. What output
does running the following script produce?
<?php
var_dump(ini_get("date.timezone"));
var_dump(date_default_timezone_get());
?>
------------------------------------------------------------------------
[2021-04-28 08:30:12] loic dot geny at gmail dot com
We cant edit comment ? Sorry (again) , but the correct output is :
$timeZoneTl = IntlTimeZone::createTimeZone('Europe/Paris')->toDateTimeZone();
$dateT = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', '1940-06-15
22:00:00', new DateTimeZone('Etc/GMT-0'));
$timeZonedDateT = $dateT->setTimezone($timeZoneTl);
echo $timeZonedDateT->format('Y-m-d');
Output : 16/06/1940 (correct)
------------------------------------------------------------------------
[2021-04-28 08:27:46] loic dot geny at gmail dot com
I'm sorry because I cannot reproduce the bug in a PHP sandbox, I'm still a noob in pure
PHP ...
------------------------------------------------------------------------
[2021-04-28 08:26:16] loic dot geny at gmail dot com
It's hard to reproduce because I'm working on Symfony. My DateTimeImmutable has
date.timezone_type = 1
date.timezone = "+00:00"
But here is a more accuracte sample of what is my "state" when the bug occures :
$timeZoneTl = IntlTimeZone::createTimeZone('Europe/Paris')->toDateTimeZone();
$dateT = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', '1940-06-13
22:00:00', new DateTimeZone('Etc/GMT-0'));
$timeZonedDateT = $dateT->setTimezone($timeZoneTl);
echo $timeZonedDateT->format('Y-m-d');
Output : 13/06/1940 (wrong)
$timeZoneTl = IntlTimeZone::createTimeZone('Europe/Paris')->toDateTimeZone();
$dateT = DateTimeImmutable::createFromFormat('Y-m-d H:i:s', '1940-06-15
22:00:00', new DateTimeZone('Etc/GMT-0'));
$timeZonedDateT = $dateT->setTimezone($timeZoneTl);
echo $timeZonedDateT->format('Y-m-d');
Output : 15/06/1940 (correct)
------------------------------------------------------------------------
[2021-04-27 14:56:18] derick@php.net
What is date.timezone set to? Please add that to your reproduce script.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=80995
--
Edit this bug report at https://bugs.php.net/bug.php?id=80995&edit=1
Thread (7 messages)