Bug #66294 [Com]: Timezone display and Timestamps are incorrect when using GMT+/- timezones

From: Date: Wed, 22 Mar 2017 16:59:45 +0000
Subject: Bug #66294 [Com]: Timezone display and Timestamps are incorrect when using GMT+/- timezones
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-208004@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=66294&edit=1 ID: 66294 Comment by: krossiter at dlvr dot it Reported by: jrossiter at dlvr dot it Summary: Timezone display and Timestamps are incorrect when using GMT+/- timezones Status: Wont fix Type: Bug Package: Date/time related Operating System: Ubuntu 13.04 PHP Version: 5.5.7 Block user comment: N Private report: N New Comment: There was no such proscription at the time the bug was filed. Also, since these are valid timezones, they should be operating as expected. The user cannot always define what format they receive timezone strings in, and being required to add significant special-case handling of the Etc/UTC timezones is ridiculous. Previous Comments: ------------------------------------------------------------------------ [2017-03-19 11:27:37] heiglandreas@php.net As already pointed out, you are advised to *not* use the GMT-Timezone identifiers as stated at http://www.php.net/manual/en/timezones.others.php. Therefore we won't fix this issue! ------------------------------------------------------------------------ [2015-09-08 14:47:44] cmb@php.net Confirmed: <https://3v4l.org/RCA06>. However, the manual strongly advises against using the Etc/GMT* timezones[1], so I suppose that this issue won't be fixed. [1] <http://www.php.net/manual/en/timezones.others.php> ------------------------------------------------------------------------ [2013-12-14 07:18:28] jrossiter at dlvr dot it Description: ------------ Creating a new DateTime object using a fixed string with a "GMT(+/-)nn" timezone (e.g. "GMT+12" or "GMT-10") results in the correct date and time being displayed, with but a badly formatted timezone ("GMT+1200", "GMT-1000") (A note if the reader isn't aware... the Etc/GMT timezones actually perform the opposite of what they appear to be requesting. GMT+12 is actually GMT minus 12 hours, and GMT-10 is actually GMT plus 10 hours) The unix timestamp returned by this object is incorrect by 2*offset. So, the GMT+12 returns a timestamp decremented 24 hours. The GMT-10 returns a date/time incremented by 20 hours. Creating a new DateTime object and passing in a DateTimeZone object using an Etc/GMT(+/-)nn (e.g. "Etc/GMT+12") timezone displays timestamps and formatted timezone as expected. Test script: --------------- foreach (['Etc/GMT+12', 'Etc/GMT-10'] as $timezone) { $dTZ = new DateTimeZone($timezone); // Create a DateTime using the DateTimeZone object // This will display both formatted and unix timestamp as expected $dT = new DateTime('2013-12-13 18:49:00', $dTZ); echo $dT->format('Y-m-d H:i:s T'), PHP_EOL; echo $dT->getTimestamp(), PHP_EOL; // Create a DateTime using only a string representation // This will display the formatted date/time as expected, // but with the incorrect timezone // The value returned by getTimestamp() for format('U') will // be off by 2*offset $dT2 = new DateTime($dT->format('Y-m-d H:i:s T')); echo $dT2->format('Y-m-d H:i:s T'), PHP_EOL; echo $dT2->getTimestamp(), PHP_EOL, PHP_EOL; } Expected result: ---------------- 2013-12-13 18:49:00 GMT+12 1387003740 2013-12-13 18:49:00 GMT+12 1387003740 2013-12-13 18:49:00 GMT-10 1386924540 2013-12-13 18:49:00 GMT-10 1386924540 Actual result: -------------- 2013-12-13 18:49:00 GMT+12 1387003740 2013-12-13 18:49:00 GMT+1200 1386917340 2013-12-13 18:49:00 GMT-10 1386924540 2013-12-13 18:49:00 GMT-1000 1386996540 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=66294&edit=1

« previous php.bugs (#208004) next »