2009-03-05 59 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,但几乎没有。

相关问题