ID:               30096
 Updated by:       [EMAIL PROTECTED]
 Reported By:      schmidt_florian at f-24 dot com
-Status:           Assigned
+Status:           Closed
 Bug Type:         Date/time related
 Operating System: *
 PHP Version:      5.*, 4.*
 Assigned To:      derick
 New Comment:

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------

[2005-04-05 18:52:46] fabian-php at spline dot de

Crap!
I posted a wrong version, where the dst parameter of the gmmktime call
was set to 0 (which shouldn't make a difference according to the
documenation by the way)
To get the output a was talking about one has to remove the 7th
parameter from the gmmktime call.

====================OUTPUT=================
no dst --> dst
gmmktime(1,0,0,3,27,2005): 1111885200 | gmdate('r',1111885200):Sun, 27
Mar 2005 01:00:00 +0000
gmmktime(2,0,0,3,27,2005): 1111892400 | gmdate('r',1111892400):Sun, 27
Mar 2005 03:00:00 +0000 | Diff: 7200
gmmktime(3,0,0,3,27,2005): 1111892400 | gmdate('r',1111892400):Sun, 27
Mar 2005 03:00:00 +0000 | Diff: 0
gmmktime(4,0,0,3,27,2005): 1111896000 | gmdate('r',1111896000):Sun, 27
Mar 2005 04:00:00 +0000 | Diff: 3600

dst --> no dst
gmmktime(1,0,0,10,30,2005): 1130634000 | gmdate('r',1130634000):Sun, 30
Oct 2005 01:00:00 +0000
gmmktime(2,0,0,10,30,2005): 1130637600 | gmdate('r',1130637600):Sun, 30
Oct 2005 02:00:00 +0000 | Diff: 3600
gmmktime(3,0,0,10,30,2005): 1130641200 | gmdate('r',1130641200):Sun, 30
Oct 2005 03:00:00 +0000 | Diff: 3600
gmmktime(4,0,0,10,30,2005): 1130644800 | gmdate('r',1130644800):Sun, 30
Oct 2005 04:00:00 +0000 | Diff: 3600

------------------------------------------------------------------------

[2005-04-05 18:46:47] fabian-php at spline dot de

I can reproduce this for debian testing (php 4.3.10) and for gentoo
(php 4.3.10).

The problem apears only the day when switching from dst to no dst. On
that day all input that is between 02:00:00-02:59:59 ist mapped to a
timestamp which is 3600 seconds later (03:00:00-03:50:59).


Here is my script to reproduce the behavoir:

<?php
echo "no dst --> dst<br>";
$ts=-1;
gm_date_check(01,00,00,03,27,2005);
gm_date_check(02,00,00,03,27,2005);
gm_date_check(03,00,00,03,27,2005);
gm_date_check(04,00,00,03,27,2005);
echo "<p>";
echo "dst --> no dst<br>";
$ts=-1;
gm_date_check(01,00,00,10,30,2005);
gm_date_check(02,00,00,10,30,2005);
gm_date_check(03,00,00,10,30,2005);
gm_date_check(04,00,00,10,30,2005);

function gm_date_check($hour,$minute,$second,$month,$day,$year) {
        global $ts,$tsold;
        echo "gmmktime($hour,$minute,$second,$month,$day,$year): " ;
        $tsold = $ts;
        $ts = gmmktime($hour,$minute,$second,$month,$day,$year,0) ;
        echo $ts ." | gmdate('r',$ts):".gmdate('r',$ts);
        if ($tsold>0) echo " | Diff: " . ($ts - $tsold);
        echo "<br>";
}

?>

==================OUTPUT==============================
no dst --> dst
gmmktime(0,0,0,3,27,2005): 1111885200 | gmdate('r',1111885200):Sun, 27
Mar 2005 01:00:00 +0000
gmmktime(1,0,0,3,27,2005): 1111888800 | gmdate('r',1111888800):Sun, 27
Mar 2005 02:00:00 +0000 | Diff: 3600
gmmktime(2,0,0,3,27,2005): 1111892400 | gmdate('r',1111892400):Sun, 27
Mar 2005 03:00:00 +0000 | Diff: 3600
gmmktime(3,0,0,3,27,2005): 1111896000 | gmdate('r',1111896000):Sun, 27
Mar 2005 04:00:00 +0000 | Diff: 3600
gmmktime(4,0,0,3,27,2005): 1111899600 | gmdate('r',1111899600):Sun, 27
Mar 2005 05:00:00 +0000 | Diff: 3600

dst --> no dst
gmmktime(0,0,0,10,30,2005): 1130630400 | gmdate('r',1130630400):Sun, 30
Oct 2005 00:00:00 +0000
gmmktime(1,0,0,10,30,2005): 1130634000 | gmdate('r',1130634000):Sun, 30
Oct 2005 01:00:00 +0000 | Diff: 3600
gmmktime(2,0,0,10,30,2005): 1130637600 | gmdate('r',1130637600):Sun, 30
Oct 2005 02:00:00 +0000 | Diff: 3600
gmmktime(3,0,0,10,30,2005): 1130641200 | gmdate('r',1130641200):Sun, 30
Oct 2005 03:00:00 +0000 | Diff: 3600
gmmktime(4,0,0,10,30,2005): 1130644800 | gmdate('r',1130644800):Sun, 30
Oct 2005 04:00:00 +0000 | Diff: 3600

------------------------------------------------------------------------

[2005-04-04 15:48:07] gottwald at quantum-hydrometrie dot de

This is still broken for 4.3.10. gmmktime() is correct when changing
from DST to non-DST, but incorrect when changing from non-DST to DST:

gmmktime(02, 00, 00, 10, 31, 2004): 1099188000
gmmktime(03, 00, 00, 10, 31, 2004): 1099191600
Diff: 3600, correct

gmmktime(02, 00, 00, 03, 27, 2005): 1111892400
gmmktime(03, 00, 00, 03, 27, 2005): 1111892400
Diff: 0, broken

------------------------------------------------------------------------

[2004-09-16 08:23:23] [EMAIL PROTECTED]

Rasmus, I can reproduce it here. No clue why yet. I guess I have
something to do on the next plane ;-)

------------------------------------------------------------------------

[2004-09-15 19:11:24] schmidt_florian at f-24 dot com

the timezone should!! be irrelevant thats the reason i use
gmmktime()... but it dont work?!

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/30096

-- 
Edit this bug report at http://bugs.php.net/?id=30096&edit=1

Reply via email to