X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FMsgTime.pm;h=8703d7bc0a78293dbe4735e34c5a339ad8cffb6c;hb=d857e7dc0d816b635a7ead09c3273f8c2d2434be;hp=479aaa4ecf132f5176d49ce54db6171769872666;hpb=b474aff922a07da7c4d9db00dec9cebb4744aa8c;p=public-inbox.git diff --git a/lib/PublicInbox/MsgTime.pm b/lib/PublicInbox/MsgTime.pm index 479aaa4e..8703d7bc 100644 --- a/lib/PublicInbox/MsgTime.pm +++ b/lib/PublicInbox/MsgTime.pm @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2019 all contributors +# Copyright (C) 2018-2020 all contributors # License: AGPL-3.0+ # Various date/time-related functions @@ -38,7 +38,7 @@ sub str2date_zone ($) { if ($date =~ /(?:[A-Za-z]+,?\s+)? # day-of-week ([0-9]+),?\s+ # dd ([A-Za-z]+)\s+ # mon - ([0-9]{2,})\s+ # YYYY or YY (or YYY :P) + ([0-9]{2,4})\s+ # YYYY or YY (or YYY :P) ([0-9]+)[:\.] # HH: ((?:[0-9]{2})|(?:\s?[0-9])) # MM (?:[:\.]((?:[0-9]{2})|(?:\s?[0-9])))? # :SS @@ -67,6 +67,10 @@ sub str2date_zone ($) { $ts = timegm($ss // 0, $mm, $hh, $dd, $mon, $yyyy); + # 4-digit dates in non-spam from 1900s and 1910s exist in + # lore archives + return if $ts < 0; + # Compute the time offset from [+-]HHMM $tz //= 0; my ($tz_hh, $tz_mm); @@ -100,7 +104,8 @@ sub str2date_zone ($) { # off is the time zone offset in seconds from GMT my ($ss,$mm,$hh,$day,$month,$year,$off) = Date::Parse::strptime($date); - return undef unless(defined $off); + return unless defined($year); + $off //= 0; # Compute the time zone from offset my $sign = ($off < 0) ? '-' : '+';