]> granicus.if.org Git - php/commitdiff
Fixed bug #39782 (setTime() on a DateTime constructed with a Weekday
authorIlia Alshanetsky <iliaa@php.net>
Mon, 11 Dec 2006 21:04:40 +0000 (21:04 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Mon, 11 Dec 2006 21:04:40 +0000 (21:04 +0000)
yields incorrect results).

NEWS
ext/date/php_date.c
ext/date/tests/bug39782.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index f7381ce23e01edbbab6799271f82a5553065d4a2..43aacb340150caa5e80ff38e16440ab337be6aae 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -54,6 +54,8 @@ PHP                                                                        NEWS
   multipliers). (Ilia)
 - Fixed bug #39787 (PHP doesn't work with Apache 2.3). (mv at binarysec dot
   com).
+- Fixed bug #39782 (setTime() on a DateTime constructed with a Weekday
+  yields incorrect results). (Ilia)
 - Fixed bug #39780 (PNG image with CRC/data error raises fatal error) (Pierre)
 - Fixed bug #39775 ("Indirect modification ..." message is not shown). (Dmitry)
 - Fixed bug #39763 (magic quotes are applied twice by ext/filter in
index c5502daf2e4ad96f229b8eed5b17c783c4873927..07dc3ecf6c5e9490686b749d9533f1a7f2eefe19 100644 (file)
@@ -1643,6 +1643,8 @@ static void date_initialize(php_date_obj *dateobj, /*const*/ char *time_str, int
        timelib_fill_holes(dateobj->time, now, 0);
        timelib_update_ts(dateobj->time, tzi);
 
+       dateobj->time->have_weekday_relative = dateobj->time->have_relative = 0;
+
        if (now->tz_info != tzi) {
                timelib_tzinfo_dtor(now->tz_info);
        }
diff --git a/ext/date/tests/bug39782.phpt b/ext/date/tests/bug39782.phpt
new file mode 100644 (file)
index 0000000..99abdd7
--- /dev/null
@@ -0,0 +1,19 @@
+--TEST--
+Bug #39782 (setTime() on a DateTime constructed with a Weekday yields incorrect results)
+--FILE--
+<?php
+date_default_timezone_set("GMT");
+
+$dttTest = new DateTime('Dec 10 2006 Next Wednesday');
+echo $dttTest->format('D M j Y - H:i:s') . "\n";
+
+$dttTest->setTime(12, 0, 0);
+echo $dttTest->format('D M j Y - H:i:s') . "\n";
+
+$dttTest->setTime(12, 0, 0);
+echo $dttTest->format('D M j Y - H:i:s') . "\n";
+?>
+--EXPECT--
+Wed Dec 13 2006 - 00:00:00
+Wed Dec 13 2006 - 12:00:00
+Wed Dec 13 2006 - 12:00:00
\ No newline at end of file