代码之家  ›  专栏  ›  技术社区  ›  Alex

在Perl中处理时间数学的最佳方法是什么?

  •  6
  • Alex  · 技术社区  · 17 年前

    我正在运行两个大型日志文件,我想比较时间戳。

    我已经编写了一个Perl脚本来查找匹配的日志语句,但是我需要找出时间戳的区别。

    例如,15:31:19.430888减去15:31:19.427763

    在Perl中是否有处理时间的好构造?如果我能避免的话,我不想自己处理时间数学。

    2 回复  |  直到 17 年前
        1
  •  13
  •   denkfaul    17 年前

    你可以使用 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 从中检索结果的对象。

        2
  •  5
  •   skiphoppy    17 年前

    datetime是最好的,但只有当您在进行任何涉及减法的日期数学运算时,记住使用减法datetime绝对方法而不是重载的减法运算符时,才使用。这是从两个日期时间中获得“秒表持续时间”的唯一方法,对于我所做的那种日期算法,只有秒表持续时间是有用的。datetime::duration接口令人困惑和误导,特别是当您认为您有秒表持续时间而您没有。

    People mentioned early on how confusing this was going to be 但从来没有纠正过。

    Time::Piece模块是一个不错的选择。我不得不说,总的来说,它不如datetime有用,但它绝对避免了这种混乱。我更喜欢日期时间,但几乎没有。