我正在运行两个大型日志文件,我想比较时间戳。
我已经编写了一个Perl脚本来查找匹配的日志语句,但我需要找到时间戳的差异。
例如,15:31:19.430888减去15:31:19.427763
在Perl中处理时间有什么好的结构吗?如果我可以避免,我不想自己处理时间数学。
答案 0 :(得分: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对象,以便从。
中检索结果答案 1 :(得分:5)
DateTime是最好的,但只有当你做任何涉及减法的日期数学时,你才记得使用subtract_datetime_absolute方法而不是重载减号运算符。这是从两个日期时间中获得“秒表持续时间”的唯一方法,只有秒表持续时间对我所做的日期算术有用。 DateTime :: Duration界面令人困惑和误导,特别是当你认为你有一个秒表持续时间而你却没有。
People mentioned early on how confusing this was going to be但它从未得到纠正。
Time :: Piece模块是一个很好的选择。我不得不说整体它没有DateTime那么有用,但它绝对避免了这种混乱。我更喜欢DateTime,但只是勉强。