lib/PublicInbox/MsgTime.pm | 3 ++- t/msgtime.t | 7 +++++++ diff --git a/lib/PublicInbox/MsgTime.pm b/lib/PublicInbox/MsgTime.pm index 8eee9a7586922c0fb302421c4c195b4540793fd2..8703d7bc0a78293dbe4735e34c5a339ad8cffb6c 100644 --- a/lib/PublicInbox/MsgTime.pm +++ b/lib/PublicInbox/MsgTime.pm @@ -104,7 +104,8 @@ # 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) ? '-' : '+'; diff --git a/t/msgtime.t b/t/msgtime.t index 5c4636a2da73894b344d80714451e7ea20be6dbe..7c95e547d5bf98dcb877737d73a2c32c1339eef3 100644 --- a/t/msgtime.t +++ b/t/msgtime.t @@ -5,6 +5,8 @@ use warnings; use Test::More; use PublicInbox::MIME; use PublicInbox::MsgTime; +use PublicInbox::TestCommon; + our $received_date = 'Mon, 22 Jan 2007 13:16:24 -0500'; sub datestamp ($) { my ($date) = @_; @@ -101,6 +103,11 @@ is_datestamp('Wed, 20 Dec 2006 05:32:58 +0420', [1166577178, '+0420']); is_datestamp('Thu, 14 Dec 2006 00:20:24 +0480', [1166036424, '+0520']); is_datestamp('Thu, 14 Dec 2006 00:20:24 -0480', [1166074824, '-0520']); is_datestamp('Mon, 14 Apr 2014 07:59:01 -0007', [1397462761, '-0007']); + +SKIP: { + require_mods('Date::Parse', 1); + is_datestamp('Sat, 27 Sep 1997 10:02:32', [875354552, '+0000']); +} # obsolete formats described in RFC2822 for (qw(UT GMT Z)) {