2009-03-05 54 views
6

我正在運行兩個大日誌文件,我想比較時間戳。在Perl中處理時間數學的最佳方法是什麼?

我已經寫了一個Perl腳本來查找匹配的日誌語句,但我需要找到時間戳中的差異。

例如,15:31:19.430888零下15:31:19.427763

是否存在與時間在Perl處理任何好的結構?如果我可以避免,我不想自己處理數學問題。

+0

花費它學習Python? annakata 2009-03-05 16:31:37

+1

http://articles.techrepublic.com.com/5100-10878_11-6132371.html – grieve 2009-03-05 16:36:00

回答

13

您可以使用DateTime CPAN模塊。

例如。

my $dt = DateTime->new( 
         year => 2009, 
         hour => 15, 
         minute => 31, 
         second => 19, 
         nanosecond => 430888 
); 
my $dt2 = DateTime->new( 
         year => 2009, 
         hour => 15, 
         minute => 31, 
         second => 19, 
         nanosecond => 427763 
); 
my $duration = $dt - $dt2; 

這將給你一個DateTime::Duration對象來檢索結果。

+0

有沒有在defaul的Perl的lib任何這樣的結構?不在CPAN中? – Alex 2009-03-05 17:28:52

5

日期時間是最好的,但只有當你還記得你做的任何日期的數學包含減號,而不是使用重載負操作的subtract_datetime_absolute方法。這是從兩個日期時間中獲得「秒錶持續時間」的唯一方法,並且只有秒錶持續時間對於我所做的日期算術有用。 DateTime :: Duration界面令人困惑和誤導,特別是當你認爲你有秒錶持續時間,而你沒有。

People mentioned early on how confusing this was going to be但它從未糾正。

Time :: Piece模塊是一個不錯的選擇。我不得不說它總體上不如DateTime那麼有用,但它絕對避免了這種混淆。我更喜歡DateTime,但幾乎沒有。

相關問題