Bug #66294 [Opn->Wfx]: Timezone display and Timestamps are incorrect when using GMT+/- timezones
| From: | heiglandreas@php.net | Date: | Sun, 19 Mar 2017 11:27:38 +0000 |
| Subject: | Bug #66294 [Opn->Wfx]: Timezone display and Timestamps are incorrect when using GMT+/- timezones | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-207947@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
Updated by: heiglandreas@php.net
Reported by: jrossiter at dlvr dot it
Summary: Timezone display and Timestamps are incorrect when
using GMT+/- timezones
-Status: Open
+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:
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!
Previous Comments:
------------------------------------------------------------------------
[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