PHP 4.0 Bug #8716 Updated: Error in date("j", <time>) or getdate(<time>) function
| From: | ageorgou at filmnet dot gr | Date: | Mon, 15 Jan 2001 17:08:28 +0000 |
| Subject: | PHP 4.0 Bug #8716 Updated: Error in date("j", <time>) or getdate(<time>) function | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-44149@lists.php.net to get a copy of this message | ||
ID: 8716
User Update by: ageorgou@filmnet.gr
Status: Closed
Bug Type: Date/time related
Description: Error in date("j", <time>) or getdate(<time>) function
date function doesn't give the same dates as it would expecte if we add the day seconds (86400)
in a UNIX timestamp. I realised that these is because I didn't take any consideration of
daylight time savings.
<?
$daySeconds = 86400;
$time = 1004216400;
echo "Day in 28 of October is " . date("j", $time) .
"<BR>\n";
$time += $daySeconds;
echo "Day in 29 of October is " . date("j", $time) .
"<BR>\n";
$time += $daySeconds;
echo "Day in 30 of October is " . date("j", $time) .
"<BR>\n";
$time += $daySeconds;
echo "Day in 31 of October is " . date("j", $time) .
"<BR>\n";
?>
Previous Comments:
---------------------------------------------------------------------------
[2001-01-15 12:08:06] rasmus@php.net
Your starting timestamp is wrong. 1004216400 is a timestamp for the 27th of October. At least in
my timezone. You may be in a different timezone where this falls right around midnight so you think
it is on the 28th, but then daylight savings time may throw you off. If you are going to do math
like this using timestamps pick a starting timestamp around noon so that the +-1 hour for daylight
savings doesn't throw everything off on you.
---------------------------------------------------------------------------
[2001-01-15 11:55:52] ageorgou@filmnet.gr
<?
echo "date function gives wrong day for dates between 28 and 31 of October on any yearn";
$daySeconds = 86400;
$time = 1004216400;
echo "Day in 28 of October is " . date("j", $time) . "<BR>n";
$time += $daySeconds;
echo "Day in 29 of October is " . date("j", $time) . "<BR>n";
$time += $daySeconds;
echo "Day in 30 of October is " . date("j", $time) . "<BR>n";
$time += $daySeconds;
echo "Day in 31 of October is " . date("j", $time) . "<BR>n";
?>
Configure Line is
./configure' '--prefix=/usr' '--with-config-file-path=/etc'
'--disable-debug' '--enable-pic' '--enable-shared'
'--enable-inline-optimization' '--with-apxs=/usr/sbin/apxs'
'--with-exec-dir=/usr/bin' '--with-regex=system' '--with-gettext'
'--with-gd=shared' '--with-jpeg-dir=/usr' '--with-png'
'--with-zlib' '--with-db2' '--with-db3' '--with-gdbm'
'--enable-debugger' '--enable-magic-quotes' '--enable-safe-mode'
'--enable-sysvsem' '--enable-sysvshm' '--enable-track-vars'
'--enable-yp' '--enable-ftp' '--without-mysql'
'--without-oracle' '--without-oci8' '--with-openssl'
'--with-xml'
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=8716