From: [EMAIL PROTECTED]
Operating system: Solaris 2.6
PHP version: 4.0.4pl1
PHP Bug Type: Date/time related
Bug description: gmmktime is 1 hour off during standard time
gmmktime is producing a timestamp 1 hour off when the timezone is standard time. If
you compare a
time() with gmmktime with current settings and a is_dst
value NULL, the results will be one hour off.
I used the following little script to prove this:
<?
print ("<PRE>");
print ("Time function = ".time ());
print ("\n");
print ("gmmktime = ".gmmktime (18,25,0,3,20,2001));
print ("\n");
print ("mktime = ".mktime(12,25,0,3,20,2001));
print ("\n");
print (gmmktime(7,0,0,4,1,2001)." ".mktime(1,0,0,4,1,2001)."\n");
print (gmmktime(8,0,0,4,1,2001)." ".mktime(3,0,0,4,1,2001)."\n");
?>
Currently, the US/Central timezone is -6 hours from GMT.
I believe the problem is in ext/standard/datetime.c, line
186. Judging from the code, "timezone" seems to be a negative seconds value from GMT,
probably of the standard timezone (TZ in standard). So if is_dst == 0, you don't want
to add anything more. I think the like should say:
gmadjust = -(is_dst ? timezone - 3600 : timezone );
And the comment about overcorrecting removed.
My test script works if this line is changed.
--
Edit Bug report at: http://bugs.php.net/?id=9878&edit=1
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]