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
View Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
If you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
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