summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Util.pm
diff options
context:
space:
mode:
authorFrédéric Buclin <LpSolit@gmail.com>2014-09-08 12:32:24 +0200
committerFrédéric Buclin <LpSolit@gmail.com>2014-09-08 12:32:24 +0200
commitfc4350ac3ae2a63ca423eef7c1406cd4c299d80e (patch)
tree8606f92e10e7eac82d03b1c535ce4209ad384c79 /Bugzilla/Util.pm
parentace2e1a23f97a88e055e779e34e9020f84670847 (diff)
downloadbugzilla-fc4350ac3ae2a63ca423eef7c1406cd4c299d80e.tar.gz
bugzilla-fc4350ac3ae2a63ca423eef7c1406cd4c299d80e.tar.xz
Bug 1046213: datetime_from() generates wrong dates if year < 1901
r=sgreen a=glob
Diffstat (limited to 'Bugzilla/Util.pm')
-rw-r--r--Bugzilla/Util.pm10
1 files changed, 7 insertions, 3 deletions
diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm
index fa74ee604..be65b46c6 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],