【发布时间】:2010-11-23 09:23:58
【问题描述】:
我正在寻找一个 perl 模块,它采用像“Nov 23 10:42:31.808381”这样的日期字符串,其格式类似于“%b %d ....”,然后给我一个 dateTime 对象/或打印将其转换为以相同方式指定的另一种格式。 Time::Piece 的分辨率最高可达纳秒。有什么模块可以帮助我吗? 我使用 perl 5.8(这没有命名反向引用)
【问题讨论】:
我正在寻找一个 perl 模块,它采用像“Nov 23 10:42:31.808381”这样的日期字符串,其格式类似于“%b %d ....”,然后给我一个 dateTime 对象/或打印将其转换为以相同方式指定的另一种格式。 Time::Piece 的分辨率最高可达纳秒。有什么模块可以帮助我吗? 我使用 perl 5.8(这没有命名反向引用)
【问题讨论】:
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;
【讨论】:
"Nov 23 10:42:31.808381" -- 是微秒,而不是纳秒
如果需要微秒,则必须使用 Time::HiRes;模块和gettimeofday方法。
【讨论】: