From: Byron Jones Date: Thu, 18 Sep 2014 05:10:01 +0000 (+0800) Subject: Bug 1068014: skip strptime() in datetime_from() if the date is in a standard format X-Git-Tag: bugzilla-4.5.6~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=af46080505c3103888846c59551f41e0af823bb1;p=thirdparty%2Fbugzilla.git Bug 1068014: skip strptime() in datetime_from() if the date is in a standard format r=dylan,a=glob --- diff --git a/Bugzilla/Util.pm b/Bugzilla/Util.pm index be65b46c65..670f5f8f28 100644 --- a/Bugzilla/Util.pm +++ b/Bugzilla/Util.pm @@ -552,9 +552,14 @@ sub datetime_from { # In the database, this is the "0" date. return undef if $date =~ /^0000/; - # strptime($date) returns an empty array if $date has an invalid - # date format. - my @time = strptime($date); + my @time; + # Most dates will be in this format, avoid strptime's generic parser + if ($date =~ /^(\d{4})[\.-](\d{2})[\.-](\d{2})(?: (\d{2}):(\d{2}):(\d{2}))?$/) { + @time = ($6, $5, $4, $3, $2 - 1, $1 - 1900, undef); + } + else { + @time = strptime($date); + } unless (scalar @time) { # If an unknown timezone is passed (such as MSK, for Moskow),