Perl strptime 解析毫秒

Perl strptime parse millisecond

我需要解析一些格式为 ddmmyyyyhhmmssXXX 的时间字符串。 XXX 部分是毫秒。在下面的代码中,我忽略了毫秒部分。它有效,但我收到错误:

garbage at end of string in strptime: 293 at /usr/local/lib64/perl5/Time/Piece.pm line 482.

我应该使用什么样的正确格式。

$time = '11032014182819802';
$format = '%d%m%Y%H%M%S';
$t = Time::Piece->strptime($time, $format);
Time::Piece->strptime(substr($time, 0, -3), $format);

因为 Time::Piece 不支持毫秒。

如果您关心毫秒并希望保留它们,则需要考虑使用其他东西(例如,DateTime::Format::Strptime)。

如果你想解析毫秒,可以使用DateTime::Format::Strptime,那么你可以试试这个:

my $Strp = new DateTime::Format::Strptime(
                                pattern     => '%d%m%Y%H%M%S%3N',
                        );

my $date = $Strp->parse_datetime("11032014182819802");
print $date->millisecond ,"\n";