|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2006-03-10 23:48 UTC] phil at adigital dot com dot mx
Description:
------------
date("Y-m-d H:i:s", 1175403600);
shows: 2007/4/1 00:00:00
Should be: 2007/3/1 23:00:00
the hour is shift 1 hour in PHP from march/11/2007 to april/1/2007 (20 days of 1 hour diff !)
The same problem repeat 2008, 2009, 2010, 2011, etc, but the beginning of problem is +/- 5 days and ending problem too +/- 5 days
It seems the problem is not occuring before 3/1/2007
I thought first it was maybe a daylight savings problem
BUT:
- it happens on our redhat 8 servers in US (ev1), local servers (FC4) AND windows XP
- the start and end date of the problem is quite random in a period , daylights are quite fixed
- It doesnt happen before 3/1/2007
SO i guess it's a bad bug somewhere
the result *must* be same as unix_timestamp C++ function no ?
It is not
Thx !
Reproduce code:
---------------
print date("Y-m-d H:i:s", 1175403600); // bad +1 hour
print date("Y-m-d H:i:s", 1238417200); // bad +1 hour
print mktime(0,0,0,4,1,2007);
Expected result:
----------------
2007/3/1 23:00:00
2009-03-30 06:46:40
1175407200
Actual result:
--------------
2007/4/1 00:00:00
2009-03-30 07:46:40
1175403600
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Dec 02 17:00:01 2025 UTC |
I can confirm the bug of date() shifting one hour. I use date in a calendar app : date("d",(mktime(0,0,0,$month,$day,$year)+$m*24*60*60)) where m goes from 0 to 1 and $month, $day, $year are given by the user. So it is either mktime or date problem. for the last week of November the timestamps returned are: 27 Nov: 1161921600 28 Nov: 1162008000 29 Nov: 1162094400 30 Nov: 1162180800 (Bug here it is 23:00PM of 29th yet ) 31 Nov: 1162267200 (Bug still here ) 01 Oct: 1162353600 (Bug still present) 02 Oct: 1162440000 (Same here) ---- The following week (my weeks start on Friday) the times are back to normal. The system is slackware 10.2 and I have not seen this bug in the past year. This is the first week that it occurs.The United States changed Daylight Savings Time start/end: <= 2006: 1st Sunday in April at 2:00 am >= 2007: 2nd Sunday in March at 2:00 am TEST: ----- <?php //$t1 = strtotime('2006-03-05 02:30:00'); // 1141543800 $t1 = strtotime('2007-03-04 01:30:00'); // 1172989800 //$t2 = strtotime('2006-03-05 01:30:00'); // 1141540200 $t2 = strtotime('2007-03-04 02:30:00'); // 1172993400 $step = 60 * 60 * 24 * 7; // Increment one week for ($i = 0; $i < 6; $i++) { echo $t1 . ' = ' . date('r', $t1) . "\n"; echo $t2 . ' = ' . date('r', $t2) . "\n"; echo "---\n"; $t1 = $t1 + $step; $t2 = $t2 + $step; } ?> OUTPUT: ------- 1172989800 = Sun, 04 Mar 2007 01:30:00 -0500 1172993400 = Sun, 04 Mar 2007 02:30:00 -0500 --- 1173594600 = Sun, 11 Mar 2007 01:30:00 -0500 1173598200 = Sun, 11 Mar 2007 03:30:00 -0400 --- 1174199400 = Sun, 18 Mar 2007 02:30:00 -0400 1174203000 = Sun, 18 Mar 2007 03:30:00 -0400 --- 1174804200 = Sun, 25 Mar 2007 02:30:00 -0400 1174807800 = Sun, 25 Mar 2007 03:30:00 -0400 --- 1175409000 = Sun, 01 Apr 2007 02:30:00 -0400 1175412600 = Sun, 01 Apr 2007 03:30:00 -0400 --- 1176013800 = Sun, 08 Apr 2007 02:30:00 -0400 1176017400 = Sun, 08 Apr 2007 03:30:00 -0400 ---