【问题标题】:Parsing dateTime in perl correct to micro/nano seconds在 perl 中解析 dateTime 正确到微/纳秒
【发布时间】:2010-11-23 09:23:58
【问题描述】:

我正在寻找一个 perl 模块,它采用像“Nov 23 10:42:31.808381”这样的日期字符串,其格式类似于“%b %d ....”,然后给我一个 dateTime 对象/或打印将其转换为以相同方式指定的另一种格式。 Time::Piece 的分辨率最高可达纳秒。有什么模块可以帮助我吗? 我使用 perl 5.8(这没有命名反向引用)

【问题讨论】:

    标签: perl datetime


    【解决方案1】:

    DateTime::Format::Strptime 支持微秒和纳秒。

    您的格式有点奇怪,因为它不包含年份。我已经添加了一个,你可以让这个演示代码工作。

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    use DateTime::Format::Strptime;
    
    my $strp = DateTime::Format::Strptime->new(
        pattern => '%b %d %Y %H:%M:%S.%6N',
        on_error => 'croak',
    );
    
    my $string = 'Nov 23 2010 10:42:31.808381';
    
    my $dt = $strp->parse_datetime($string);
    
    print $dt->microsecond;
    

    【讨论】:

      【解决方案2】:

      "Nov 23 10:42:31.808381" -- 是微秒,而不是纳秒

      如果需要微秒,则必​​须使用 Time::HiRes;模块和gettimeofday方法。

      【讨论】:

      • 是的,目前是微秒,但我也需要纳秒。
      • perl 即使在微秒级分辨率下也不够快。我不明白,为什么你需要纳秒。
      • 示例:perl -e 'use Time::HiRes qw/nanosleep gettimeofday/; $a=gettimeofday();nanosleep(1);$b=gettimeofday();打印 $b-$a;' 6.19888305664062e-05
      • 我想在 dateTimeFormats 之间进行转换,其中日期精确到纳秒。格式也必须是可配置的。
      猜你喜欢
      • 2019-08-01
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-18
      • 1970-01-01
      相关资源
      最近更新 更多