From: Ilia Alshanetsky Date: Wed, 5 Jan 2011 04:13:23 +0000 (+0000) Subject: Optimize unix timestamp to date-string conversion for very high year values X-Git-Tag: php-5.3.6RC1~156 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=02bdb521e2137509bc5a2e6abd4e31e9f14d22bc;p=php Optimize unix timestamp to date-string conversion for very high year values --- diff --git a/ext/date/lib/unixtime2tm.c b/ext/date/lib/unixtime2tm.c index 8dc852a6ed..871fa2f5e5 100644 --- a/ext/date/lib/unixtime2tm.c +++ b/ext/date/lib/unixtime2tm.c @@ -55,6 +55,12 @@ void timelib_unixtime2gmt(timelib_time* tm, timelib_sll ts) if (ts >= 0) { tmp_days = days + 1; + + if (tmp_days >= DAYS_PER_LYEAR_PERIOD || tmp_days <= -DAYS_PER_LYEAR_PERIOD) { + cur_year += YEARS_PER_LYEAR_PERIOD * (tmp_days / DAYS_PER_LYEAR_PERIOD); + tmp_days -= DAYS_PER_LYEAR_PERIOD * (tmp_days / DAYS_PER_LYEAR_PERIOD); + } + while (tmp_days >= DAYS_PER_LYEAR) { cur_year++; if (timelib_is_leap(cur_year)) {