$ perl -Mstrict -MData::Dumper -MDateTime::Format::Strptime -wE 'my $p = DateTime::Format::Strptime->new(pattern => "%b %d %T %Y %Z", on_error => "croak"); my ($dt1, $dt2) = map { $p->parse_datetime($_) } ("Nov 23 22:31:12 2019 GMT", "Mar 19 06:52:23 2020 GMT"); say for ($dt2, $dt1); say sprintf("%s : %s", $_, $dt2->subtract_datetime($dt1)->{$_}) for qw/months days minutes seconds/'