]> granicus.if.org Git - php/commitdiff
- Fixed a bug in formatting timestamps when DST is active in the default
authorDerick Rethans <derick@php.net>
Mon, 31 Mar 2008 09:10:54 +0000 (09:10 +0000)
committerDerick Rethans <derick@php.net>
Mon, 31 Mar 2008 09:10:54 +0000 (09:10 +0000)
  timezone.

ext/date/php_date.c
ext/date/tests/timestamp-in-dst.phpt [new file with mode: 0644]

index ee571c74cc1273ab5e2c406264561bcd7b99efa8..0bd27f8dff3ada096bdf990eca536243f1186379 100644 (file)
@@ -868,9 +868,9 @@ static char *date_format(char *format, int format_len, int *return_len, timelib_
                        offset->abbr = strdup(t->tz_abbr);
                } else if (t->zone_type == TIMELIB_ZONETYPE_OFFSET) {
                        offset = timelib_time_offset_ctor();
-                       offset->offset = (t->z - (t->dst * 60)) * -60;
+                       offset->offset = (t->z) * -60;
                        offset->leap_secs = 0;
-                       offset->is_dst = t->dst;
+                       offset->is_dst = 0;
                        offset->abbr = malloc(9); /* GMT±xxxx\0 */
                        snprintf(offset->abbr, 9, "GMT%c%02d%02d", 
                                                  localtime ? ((offset->offset < 0) ? '-' : '+') : '+',
diff --git a/ext/date/tests/timestamp-in-dst.phpt b/ext/date/tests/timestamp-in-dst.phpt
new file mode 100644 (file)
index 0000000..232bd7f
--- /dev/null
@@ -0,0 +1,13 @@
+--TEST--
+Format timestamp in DST test
+--INI--
+date.timezone=CEST
+--FILE--
+<?php
+error_reporting(E_ALL & ~E_STRICT); // hide e_strict warning about timezones
+var_dump( date_create( '@1202996091' )->format( 'c' ) );
+?>
+--EXPECT--
+string(25) "2008-02-14T13:34:51+00:00"
+--UEXPECT--
+unicode(25) "2008-02-14T13:34:51+00:00"