2015-08-27 53 views
2

我需要解析一些格式爲ddmmyyyyhhmmssXXX的時間字符串。 XXX部分是毫秒。在下面的代碼Im忽略毫秒部分。它的工作原理,但我得到的錯誤:Perl strptime解析毫秒

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); 
+0

你要什麼用毫秒做?只是忽略他們?用它們來繞過秒場?或者是其他東西? – Borodin

+0

我計算兩次之間的差異。大多數情況下,如果差異在幾秒鐘內就可以。但在特殊情況下,我可能需要毫秒級別的差異。 –

回答

4
Time::Piece->strptime(substr($time, 0, -3), $format); 

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

0

如果你關心的毫秒數,並希望保留它們,你需要看看使用其他東西(例如,DateTime::Format::Strptime)。

1

您可以使用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";