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

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

index a892612407e6e74e08ecacf3d716ece61de939ea..cfbe553cf18dea62f0a619b322bc6393e204085d 100644 (file)
@@ -1771,6 +1771,7 @@ 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