Bug #74691 [Com]: Novosibirsk Data Time Anomaly

From: Date: Sun, 04 Jun 2017 08:58:31 +0000
Subject: Bug #74691 [Com]: Novosibirsk Data Time Anomaly
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-209383@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=74691&edit=1 ID: 74691 Comment by: heiglandreas@php.net Reported by: karpulix at ya dot ru Summary: Novosibirsk Data Time Anomaly Status: Not a bug Type: Bug Package: Date/time related Operating System: All PHP Version: 7.1.5 Block user comment: N Private report: N New Comment: Why do you think the diff doesn't provide the data correctly? After all there IS one hour missing in the diff. You might want something different from it but that's a different story. The difference between anytime on the 2nd of June 2015 in "Asia/Novosibirsk" and the same time on the 2nd of June 2017 in Asia/Novosibirsk is 1 year, 11 months, 30 days and 23 hours. So I'd really be interested why you think it doesn't "provide the data correctly" Previous Comments: ------------------------------------------------------------------------ [2017-06-04 08:12:47] karpulix at ya dot ru But in fact diff does not provide the data correctly. Maybe need to fix the problem at the level of the environment? ----------- Но фактически diff предоставляет неверные данные. Может быть нужно исправлять проблему на уровне окружения? ------------------------------------------------------------------------ [2017-06-04 07:53:29] heiglandreas@php.net The diff method works pretty well, you are only looking at a fraction of the result though. When you look at https://3v4l.org/6eiD6 you will notice that the difference is 1 year, 11 months, 30 days and 23 hours. Due to the DST-change it's 1 hour short of being two years! ------------------------------------------------------------------------ [2017-06-02 12:14:36] karpulix at ya dot ru Because of this, the method works incorrectly "diff" from "DateTime class" ----- Из-за этого неверно работает метод "diff" класса DateTime //correct: $dataTimeZone = new DateTimeZone("Europe/Moscow"); $datetime = new DateTime('02.06.2015',$dataTimeZone); $now = new DateTime('02.06.2017',$dataTimeZone); $interval = $datetime->diff($now); $fullYear = (int)$interval->format("%Y"); echo $fullYear; // 2 - its correct //incorrect $dataTimeZone = new DateTimeZone("Asia/Novosibirsk"); $datetime = new DateTime('02.06.2015',$dataTimeZone); $now = new DateTime('02.06.2017',$dataTimeZone); $interval = $datetime->diff($now); $fullYear = (int)$interval->format("%Y"); echo $fullYear; // 1 - its incorrect ------------------------------------------------------------------------ [2017-06-02 11:33:26] derick@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php Actually, I see what happens. There is no bug. Unlike Moscow and New_York, Novosibirsk changed GMT offsets between June 2nd,2015 and June 2nd, 2017. Moscow: Europe/Moscow Sat Mar 26 23:00:00 2011 UT = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400 Europe/Moscow Sat Oct 25 21:59:59 2014 UT = Sun Oct 26 01:59:59 2014 MSK isdst=0 gmtoff=14400 Europe/Moscow Sat Oct 25 22:00:00 2014 UT = Sun Oct 26 01:00:00 2014 MSK isdst=0 gmtoff=10800 (Last change was in 2014 to UTC+3) New York UTC+3 Novosibirsk: Asia/Novosibirsk Sat Mar 26 20:00:00 2011 UT = Sun Mar 27 03:00:00 2011 +07 isdst=0 gmtoff=25200 Asia/Novosibirsk Sat Oct 25 18:59:59 2014 UT = Sun Oct 26 01:59:59 2014 +07 isdst=0 gmtoff=25200 Asia/Novosibirsk Sat Oct 25 19:00:00 2014 UT = Sun Oct 26 01:00:00 2014 +06 isdst=0 gmtoff=21600 Asia/Novosibirsk Sat Jul 23 19:59:59 2016 UT = Sun Jul 24 01:59:59 2016 +06 isdst=0 gmtoff=21600 Asia/Novosibirsk Sat Jul 23 20:00:00 2016 UT = Sun Jul 24 03:00:00 2016 +07 isdst=0 gmtoff=25200 UTC+6 in 2015, and UTC+7 in 2017. That's why you get the 3600 seconds difference. ------------------------------------------------------------------------ [2017-06-02 11:29:10] derick@php.net Can you add the Actual and Expected output please? ------------------------------------------------------------------------ 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=74691 -- Edit this bug report at https://bugs.php.net/bug.php?id=74691&edit=1

« previous php.bugs (#209383) next »