From: Frédéric Buclin Date: Mon, 8 Sep 2014 10:32:24 +0000 (+0200) Subject: Bug 1046213: datetime_from() generates wrong dates if year < 1901 X-Git-Tag: bugzilla-4.5.6~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fc4350ac3ae2a63ca423eef7c1406cd4c299d80e;p=thirdparty%2Fbugzilla.git Bug 1046213: datetime_from() generates wrong dates if year < 1901 r=sgreen a=glob --- diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index fa74ee6041..be65b46c65 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -566,10 +566,14 @@ sub datetime_from { return undef if !@time; - # strptime() counts years from 1900, and months from 0 (January). - # We have to fix both values. + # strptime() counts years from 1900, except if they are older than 1901 + # in which case it returns the full year (so 1890 -> 1890, but 1984 -> 84, + # and 3790 -> 1890). We make a guess and assume that 1100 <= year < 3000. + $time[5] += 1900 if $time[5] < 1100; + my %args = ( - year => $time[5] + 1900, + year => $time[5], + # Months start from 0 (January). month => $time[4] + 1, day => $time[3], hour => $time[2],