ID:               27533
 Comment by:       webmaster at ragnarokonline dot de
 Reported By:      scottmacvicar at ntlworld dot com
 Status:           Open
 Bug Type:         Date/time related
 Operating System: *
 PHP Version:      4CVS-2004-03-08 (stable)
 New Comment:

wfm with my local timezone (Germany, GMT+1) but I could reproduce it,
after I've changed the timzone to GMT+0 (Dublin, Edinburgh, Lissabon,
London)



Autodetect DST-Settings was always active.


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

[2004-03-08 21:27:34] scottmacvicar at ntlworld dot com

Description:
------------
This bug seems to have different affect on Windows and Linux.



Windows

------

System has to be running GMT and Automatically adjust clock for
daylight savings time checked.



You'll notice that the 27th appears twice. The second occurence of the
27th is Sat Mar 27 23:00:00 2004.

------



Redhat 9.0

------

The timestamp for linux on the 28th is Sun Mar 28 02:00:00 2004



/etc/sysconfig/clock

ZONE="Europe/London"

UTC=true

ARC=false

------

So Windows lost an hour and linux gained 2 hours.



Patch

--- datetime.c  2004-03-09 02:19:32.000000000 +0000

+++ datetime.c.patched  2004-03-09 02:20:48.000000000 +0000

@@ -192,8 +192,8 @@

                /* fall-through */ 

        case 1: /* hour */

                val = (*arguments[0])->value.lval; 

-               if (val < 1) { 

-                       chgsecs += (1-val) * 60*60; val = 1; 

+               if (val < 2) { 

+                       chgsecs += (2-val) * 60*60; val = 2; 

                } 

                ta->tm_hour = val; 

                /* fall-through */ 



Changing the time to

02:01:01 seems to correct this issue and the windows machine stops
eating an hour and not setting tm_idst to 1 and i have no idea whats
going on with the linux machine.

Reproduce code:
---------------
<?php

for ($i = 26; $i <= 29; $i++)

{

        $datestamp = gmmktime(0, 0, 0, 3, $i, 2004);

        $day = gmdate('j', $datestamp);

        echo "$datestamp - $day\n\n";

}

?>

Expected result:
----------------
1080259200 - 26

1080345600 - 27

1080432000 - 28

1080518400 - 29

Actual result:
--------------
Windows

---

1080259200 - 26

1080345600 - 27

1080428400 - 27

1080518400 - 29



Linux

---

1080259200 - 26

1080345600 - 27

1080439200 - 28

1080518400 - 29


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


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

Reply via email to