Один из вариантов состоит в том, чтобы проанализировать числа, используя регулярное выражение, а затем использовать Time::Local. Однако теперь, когда я понимаю, что ваш вопрос заключается в том, как перейти от форматированной строки к моменту времени в целом, этот подход будет громоздким.
Вы упомянули в своем ответе POSIX::strptime
, который отлично подходит, если ваша платформа поддерживает его. Кроме того, вы можете использовать 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
является DateTime объект, так что вы можете сделать почти все, что вы хотите с ним.
Подождите, я ответил слишком быстро. Вы хотите, чтобы строка ** '2009-08-14 00: 37: 02' ** или количество секунд с эпохи? –
Я хочу получить время со строки 2009T08T14 TTTT00: 37: 02, чтобы сравнить его с «действующими» метками времени. – Markus