One option is to parse numbers using a regular expression, and then use Time :: Local . However, now that I understand that your question is how to go from the strftime formatted string to a point in time in general, this approach should be cumbersome.
You mentioned POSIX::strptime in your answer, which is great if your platform supports it. Alternatively, you can use DateTime :: Format :: Strptime :
#!/usr/bin/perl use strict; use warnings; use DateTime::Format::Strptime; use POSIX qw(strftime); my $f = "%YT%mT%d TTTT%H:%M:%S"; my $s = strftime($f, localtime); print "$s\n"; my $Strp = DateTime::Format::Strptime->new( pattern => $f, locale => 'en_US', time_zone => 'US/Eastern', ); my $dt = $Strp->parse_datetime($s); print $dt->epoch, "\n"; print scalar localtime $dt->epoch, "\n";
$dt is a DateTime object, so you can do whatever you want with it.
source share