diff options
author | Derick Rethans <derick@php.net> | 2005-12-20 15:58:01 +0000 |
---|---|---|
committer | Derick Rethans <derick@php.net> | 2005-12-20 15:58:01 +0000 |
commit | 97ec0f3db53a4b789d08cac473c54cff9b7d0692 (patch) | |
tree | 713767ba6ad536c071960659a306cba98f48e8c3 | |
parent | 3450841dbef749545ed5ee2307427674f9a93f31 (diff) | |
download | php-git-97ec0f3db53a4b789d08cac473c54cff9b7d0692.tar.gz |
- Fixed bug #35699 (date() can't handle leap years before 1970).
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | ext/date/lib/unixtime2tm.c | 3 | ||||
-rw-r--r-- | ext/date/tests/bug35699.phpt | 14 |
3 files changed, 18 insertions, 0 deletions
@@ -39,6 +39,7 @@ PHP NEWS options like '-1'). (Tony) - Fixed bug #35705 (strtotime() fails to parse soap date format without TZ). (Ilia) +- Fixed bug #35699 (date() can't handle leap years before 1970). (Derick) - Fixed bug #35694 (Improved error message for invalid fetch mode). (Ilia) - Fixed bug #35692 (iconv_mime_decode() segmentation fault; with libiconv only). (Tony) diff --git a/ext/date/lib/unixtime2tm.c b/ext/date/lib/unixtime2tm.c index 0187abbcfb..412f86f2bb 100644 --- a/ext/date/lib/unixtime2tm.c +++ b/ext/date/lib/unixtime2tm.c @@ -93,6 +93,9 @@ void timelib_unixtime2gmt(timelib_time* tm, timelib_sll ts) DEBUG(printf("tmp_days=%lld, year=%lld\n", tmp_days, cur_year);); months = timelib_is_leap(cur_year) ? month_tab_leap : month_tab; + if (timelib_is_leap(cur_year) && cur_year < 1970) { + tmp_days--; + } i = 11; while (i > 0) { DEBUG(printf("month=%lld (%d)\n", i, months[i]);); diff --git a/ext/date/tests/bug35699.phpt b/ext/date/tests/bug35699.phpt new file mode 100644 index 0000000000..5e4951e9fc --- /dev/null +++ b/ext/date/tests/bug35699.phpt @@ -0,0 +1,14 @@ +--TEST-- +Bug #35699 (date() can't handle leap years before 1970) +--FILE-- +<?php +date_default_timezone_set("UTC"); + +echo date(DATE_ISO8601, strtotime('1964-06-06')), "\n"; +echo date(DATE_ISO8601, strtotime('1963-06-06')), "\n"; +echo date(DATE_ISO8601, strtotime('1964-01-06')), "\n"; +?> +--EXPECT-- +1964-06-06T00:00:00+0000 +1963-06-06T00:00:00+0000 +1964-01-06T00:00:00+0000 |