Bug #80995 [Opn]: Europe DateTimeZone bug in specific DateTime interval

From: Date: Wed, 28 Apr 2021 08:27:46 +0000
Subject: Bug #80995 [Opn]: Europe DateTimeZone bug in specific DateTime interval
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-233601@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=80995&edit=1 ID: 80995 User updated by: loic dot geny at gmail dot com Reported by: loic dot geny at gmail dot com Summary: Europe DateTimeZone bug in specific DateTime interval Status: Open Type: Bug Package: Date/time related Operating System: Ubuntu 20.04.2 LTS PHP Version: 7.4.16 Block user comment: N Private report: N New Comment: I'm sorry because I cannot reproduce the bug in a PHP sandbox, I'm still a noob in pure PHP ... Previous Comments: ------------------------------------------------------------------------ [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. ------------------------------------------------------------------------ [2021-04-27 13:33:16] loic dot geny at gmail dot com Description: ------------ IntlTimeZone::createTimeZone('Europe/Paris')->toDateTimeZone(); With date between 1940/01/01 and 1940/06/14, apply the DateTimeZone don't output the correct DateTimeImmutable::format('Y-m-d) Test script: --------------- $timeZone = IntlTimeZone::createTimeZone('Europe/Paris')->toDateTimeZone(); $date = DateTimeImmutable::createFromFormat('Y-m-d H:i:s','1940-06-13 23:00:00'); $timeZonedDate = $date->setTimeZone($timeZone); echo $timeZonedDate->format('Y-m-d'); $date = DateTimeImmutable::createFromFormat('Y-m-d H:i:s','1940-06-14 23:00:00'); $timeZonedDate = $date->setTimeZone($timeZone); echo $timeZonedDate->format('Y-m-d'); Expected result: ---------------- Expected result : '1940-06-14' '1940-06-15' Actual result: -------------- Current result : '1940-06-13' '1940-06-15' ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=80995&edit=1

« previous php.bugs (#233601) next »