]> granicus.if.org Git - php/commitdiff
- Fixed bug #60236 (TLA timezone dates are not converted properly from
authorDerick Rethans <derick@php.net>
Thu, 24 Nov 2011 17:13:47 +0000 (17:13 +0000)
committerDerick Rethans <derick@php.net>
Thu, 24 Nov 2011 17:13:47 +0000 (17:13 +0000)
  timestamp).
- Fixed bug #55253 (DateTime::add() and sub() result -1 hour on objects with
  time zone type 2).

And fixed some test cases.

ext/date/lib/unixtime2tm.c
ext/date/tests/bug55253.phpt
ext/date/tests/bug60236.phpt [new file with mode: 0755]
ext/date/tests/rfc-datetime_and_daylight_saving_time-type2.phpt

index 871fa2f5e515e9df4723e9f957b282f1a5fea00e..a76fa80991ebfcda18bfe207316cedf0323edc13 100644 (file)
@@ -146,7 +146,7 @@ void timelib_update_from_sse(timelib_time *tm)
                        int z = tm->z;
                        signed int dst = tm->dst;
                        
-                       timelib_unixtime2gmt(tm, tm->sse - (tm->z * 60));
+                       timelib_unixtime2gmt(tm, tm->sse - (tm->z * 60) + (tm->dst * 3600));
 
                        tm->z = z;
                        tm->dst = dst;
@@ -184,7 +184,7 @@ void timelib_unixtime2local(timelib_time *tm, timelib_sll ts)
                        int z = tm->z;
                        signed int dst = tm->dst;
                        
-                       timelib_unixtime2gmt(tm, ts - (tm->z * 60));
+                       timelib_unixtime2gmt(tm, ts - (tm->z * 60) + (tm->dst * 3600));
 
                        tm->z = z;
                        tm->dst = dst;
index 3c0efc4691dd3bcc7ec3bbd5b5942de2621c6583..3b2b42bc2622a1c6438f2067ddb2145d3a0d0d08 100755 (executable)
@@ -1,9 +1,7 @@
 --TEST--
-DateTime::add() and sub() result -1 hour on objects with time zone type 2
+Bug #55253: DateTime::add() and sub() result -1 hour on objects with time zone type 2
 --CREDITS--
 Daniel Convissor <danielc@php.net>
---XFAIL--
-Bug 55253 exists
 --FILE--
 <?php
 
diff --git a/ext/date/tests/bug60236.phpt b/ext/date/tests/bug60236.phpt
new file mode 100755 (executable)
index 0000000..b2bb62b
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+Bug #60236: TLA timezone dates are not converted properly from timestamp
+--FILE--
+<?php
+$t = new DateTime('2010-07-06 18:38:28 EDT'); 
+$ts = $t->format('U');
+var_dump($ts);
+$t->setTimestamp($ts);
+var_dump($t);
+?>
+--EXPECT--
+string(10) "1278455908"
+object(DateTime)#1 (3) {
+  ["date"]=>
+  string(19) "2010-07-06 18:38:28"
+  ["timezone_type"]=>
+  int(2)
+  ["timezone"]=>
+  string(3) "EDT"
+}
index 5813602513624157d7775ee5baf5cf78537dcb16..72585125ea6d8548248a72731b55af76563ddffe 100644 (file)
@@ -2,8 +2,6 @@
 RFC: DateTime and Daylight Saving Time Transitions (zone type 2)
 --CREDITS--
 Daniel Convissor <danielc@php.net>
---XFAIL--
-RFC not implemented yet
 --FILE--
 <?php