ID: 39012
User updated by: djmaze at planet dot nl
Reported By: djmaze at planet dot nl
-Status: Bogus
+Status: Open
Bug Type: Date/time related
Operating System: Windows
PHP Version: 5.1.6
New Comment:
You are contradicting.
Quote: Unix timestamps are always in GMT (=UTC) so there is no problem
here.
My server is set to CET which is currently GMT+2
time()-date('Z') = 1159724908 = UTC
gmdate('U') = 1159732108 = GMT+2
As you can see gmdate('U') is NOT UTC
I found so many more issues with the current date and time functions
that i'm planning to write my own php_utc extension with utcdate() and
utctime() functions with an explanation why.
Previous Comments:
------------------------------------------------------------------------
[2006-10-02 09:41:45] [EMAIL PROTECTED]
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
Unix timestamps are always in GMT (=UTC) so there is no problem here.
------------------------------------------------------------------------
[2006-10-01 19:57:09] djmaze at planet dot nl
Description:
------------
gmdate('U') shows the incorrect unix epoch.
http://php.net/gmdate: 'Format a GMT/UTC date/time'
http://php.net/date: 'U = Seconds since the Unix Epoch (January 1 1970
00:00:00 GMT)'
After calling date_default_timezone_set() everything is messed up, or
is that the whole purpose but someone forgot to document it?
Reproduce code:
---------------
<?php
function get_unixts()
{
return array(
'time()' => time(),
'date(\'U\')' => date('U'),
'date(\'Z\')' => date('Z'),
'gmtime' => (time()-date('Z')),
'gmdate(\'U\')' => gmdate('U'),
'gmdate(\'Z\')' => gmdate('Z'),
'date_default_timezone' => date_default_timezone_get(),
);
}
$def = get_unixts();
date_default_timezone_set('UTC');
$set = get_unixts();
echo '<html><body><table
border="1"><tr><td>type</td><td>normal</td><td>after set
UTC</td></tr>';
foreach ($def as $t => $v)
{
echo "<tr><td>$t</td><td>$v</td><td>{$set[$t]}</td></tr>";
}
echo '</table></body></html>';
?>
Expected result:
----------------
type normal after set UTC
time() 1159732108 1159724908
date('U') 1159732108 1159724908
date('Z') 7200 0
gmtime 1159724908 1159724908
gmdate('U') 1159724908 1159724908
gmdate('Z') 0 0
Actual result:
--------------
type normal after set UTC
time() 1159732108 1159732108
date('U') 1159732108 1159732108
date('Z') 7200 0
gmtime 1159724908 1159732108
gmdate('U') 1159732108 1159732108
gmdate('Z') 0 0
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=39012&edit=1