diff --git a/NEWS b/NEWS index f7381ce23e0..43aacb34015 100644 --- 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 diff --git a/ext/date/php_date.c b/ext/date/php_date.c index c5502daf2e4..07dc3ecf6c5 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -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 index 00000000000..99abdd7bc84 --- /dev/null +++ b/ext/date/tests/bug39782.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #39782 (setTime() on a DateTime constructed with a Weekday yields incorrect results) +--FILE-- +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