如何将perl中的任何日期时间转换为微秒

时间:2015-02-14 04:28:32

标签: perl

我需要使用perl将任何给定的日期或日期时间转换为微秒。我尝试了以下代码,它仅适用于您运行它的当前时间。

use Time::HiRes qw(gettimeofday);

my $timestamp = int (gettimeofday * 1000);
print STDOUT "timestamp = $timestamp\n";

我想知道是否有办法将任何给定的日期或日期时间转换为perl中的微秒,怎么样? 顺便说一下,我没有安装Parse模块。我的perl版本是为i386-linux-thread-multi构建的v5.8.8。

2 个答案:

答案 0 :(得分:3)

DateTime可以轻松完成:

my $dt = DateTime->new( year => 2012, nanosecond => 4 );
print $dt->hires_epoch();

有关更多示例,请参阅the docs on cpan

答案 1 :(得分:0)

我终于找到了将任何给定日期转换为微秒的方法。也就是说,使用系统日期函数,如下面的代码片段。 假设我想将100天前的日期转换为微秒。

my $anydate = strftime "%Y%m%d", localtime( time -  100 * 24 * 60 * 60 ); # a date of 100 days ago;
my $microsecs = `date -d "$anydate"  +%s%N | cut -b1-13`;
print "$microsecs\n";

这适用于任何perl版本而无需安装任何模块。