如何以给定格式显示当前日期时间,包括Perl中的微秒?

时间:2011-11-17 17:24:44

标签: perl date-formatting

我希望Perl以下列格式显示当前日期和时间:

2010-02-11 13:12:34.87876

我写了这段代码:

use Time::localtime;
my $tm = localtime;
printf("It is now %04d-%02d-%02d %02d:%02d:%02d\n", $tm->year+1900,
    ($tm->mon)+1, $tm->mday, $tm->hour, $tm->min, $tm->sec);

得到了:

2011-11-17 17:22:59

我不知道如何在输出中获得剩余的 .87876 。有人可以帮助我吗?

3 个答案:

答案 0 :(得分:11)

use DateTime::HiRes qw();
DateTime::HiRes->now(time_zone => 'local')->strftime('%F %T.%5N')
# returns '2011-11-17 17:42:42.21719'

答案 1 :(得分:8)

使用DateTimeTime::HiRes

use DateTime;
use Time::HiRes;

my $dt = DateTime->from_epoch(
    epoch     => Time::HiRes::time,
    time_zone => 'local',
);
print $dt->strftime("%Y-%m-%d %H:%M:%S.%5N"); # 2011-11-17 21:03:46.74562

这正是DateTime::HiRes创建具有亚秒级分辨率的DateTime个对象的方式。

答案 2 :(得分:1)

您可能正在寻找%5N。见DateTime::Format