php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #36688 date() doesnt five right date sometimes
Submitted: 2006-03-10 23:48 UTC Modified: 2007-02-03 22:57 UTC
Votes:2
Avg. Score:3.0 ± 0.0
Reproduced:1 of 1 (100.0%)
Same Version:1 (100.0%)
Same OS:1 (100.0%)
From: phil at adigital dot com dot mx Assigned:
Status: Not a bug Package: Date/time related
PHP Version: 5.1.2 OS: Win XP and Linux FC4
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: phil at adigital dot com dot mx
New email:
PHP Version: OS:

 

 [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

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-03-11 16:52 UTC] derick@php.net
What timezone did you configure your server to use? (date.timezone php.ini setting).
 [2006-03-19 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 [2006-10-30 16:57 UTC] gxt3 at dowling dot edu
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.
 [2007-02-03 22:57 UTC] danielc@php.net
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
---
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Sun Jul 20 18:00:03 2025 UTC