ID:               30096
 Comment by:       fabian-php at spline dot de
 Reported By:      schmidt_florian at f-24 dot com
 Status:           Assigned
 Bug Type:         Date/time related
 Operating System: Linux 2.6.7 (debian unstable)
 PHP Version:      4.3.8
 Assigned To:      derick
 New Comment:

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


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

[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?!

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

[2004-09-15 19:05:31] [EMAIL PROTECTED]

Looks ok on my Debian laptop:

php -r 'echo phpversion()."\n"; echo gmdate("H,i,s, m,d,Y",
gmmktime(02,00,01, 03,28,2004));'
4.3.9RC2-dev
02,00,01, 03,28,2004

Since we are dealing with GMT, your timezone should be irrelevant.

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

[2004-09-15 17:18:37] [EMAIL PROTECTED]

I'll have a look

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

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