#39928 [Opn->Bgs]: Bogus timezone for dates before 1922

From: Date: Fri, 22 Dec 2006 12:31:42 +0000
Subject: #39928 [Opn->Bgs]: Bogus timezone for dates before 1922
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-106781@lists.php.net to get a copy of this message
ID: 39928 Updated by: derick@php.net Reported By: lafriks at hello dot lv -Status: Open +Status: Bogus Bug Type: Date/time related Operating System: Mandriva Linux 2007 PHP Version: 5.2.0 New Comment: How strange it might be, it is correct as the following entry in the time zone database illustrates: # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Europe/Riga 1:36:24 - LMT 1880 1:36:24 - RMT 1918 Apr 15 2:00 #Riga Mean Time 1:36:24 1:00 LST 1918 Sep 16 3:00 #Latvian Summer 1:36:24 - RMT 1919 Apr 1 2:00 1:36:24 1:00 LST 1919 May 22 3:00 1:36:24 - RMT 1926 May 11 2:00 - EET 1940 Aug 5 Previous Comments: ------------------------------------------------------------------------ [2006-12-22 11:02:45] lafriks at hello dot lv When I changed in php.ini date.timezone to Europe/Riga what is what I should have. I get even stranger results: <?php $a = new DateTime(); for ($i = 2006; $i > 1900; $i--) { $a->setDate($i, 1, 1); $a->setTime(5, 3, 2); echo $a->format(DateTime::W3C) . "<br />"; } ?> Result: 2006-01-01T05:03:02+02:00 ... 1990-01-01T05:03:02+02:00 1989-01-01T05:03:02+03:00 ... 1945-01-01T05:03:02+03:00 1944-01-01T05:03:02+01:00 1943-01-01T05:03:02+01:00 1942-01-01T05:03:02+02:00 1941-01-01T05:03:02+03:00 1940-01-01T05:03:02+02:00 ... 1927-01-01T05:03:02+02:00 1926-01-01T05:03:02+01:36 ... 1901-01-01T05:03:02+01:36 PHP info: date date/time support enabled Timezone Database Version 2006.14 Timezone Database internal Default timezone Europe/Riga Directive Local Value Master Value date.default_latitude 31.7667 31.7667 date.default_longitude 35.2333 35.2333 date.sunrise_zenith 90.583333 90.583333 date.sunset_zenith 90.583333 90.583333 date.timezone Europe/Riga Europe/Riga ------------------------------------------------------------------------ [2006-12-22 10:43:15] lafriks at hello dot lv date date/time support enabled Timezone Database Version 2006.14 Timezone Database internal Default timezone Europe/Helsinki Directive Local Value Master Value date.default_latitude 31.7667 31.7667 date.default_longitude 35.2333 35.2333 date.sunrise_zenith 90.583333 90.583333 date.sunset_zenith 90.583333 90.583333 date.timezone no value no value ------------------------------------------------------------------------ [2006-12-22 08:44:53] derick@php.net Which time zone setting are you using? See phpinfo() output for the value of the date.timezone setting. ------------------------------------------------------------------------ [2006-12-22 00:47:32] lafriks at hello dot lv Description: ------------ When using new DateTime class it sets (or just formats) bogus timezone if year is before 1922. For year 1922 timezone is correct but for 1921 is showing wrong. Reproduce code: --------------- <?php $a = new DateTime(); $a->setDate(1922, 1, 1); $a->setTime(5, 3, 2); echo $a->format(DateTime::W3C) . "\n"; $a->setDate(1921, 1, 1); $a->setTime(5, 3, 2); echo $a->format(DateTime::W3C) . "\n"; ?> Expected result: ---------------- 1922-01-01T05:03:02+02:00 1921-01-01T05:03:02+02:00 Actual result: -------------- 1922-01-01T05:03:02+02:00 1921-01-01T05:03:02+01:39 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=39928&edit=1

« previous php.bugs (#106781) next »