如何在 Perl 中获取带有时间戳的微秒?

Dea*_*man 5 perl

这可能是一个愚蠢的问题,但我无法找到答案:

我有一个Python代码,它打印时间戳,如下所示:

2015-05-19 22:27:00.688441
Run Code Online (Sandbox Code Playgroud)

生成该字符串的代码如下所示:

print str(datetime.datetime.strptime(time_value, '%Y-%m-%d %H:%M:%S.%f'))
Run Code Online (Sandbox Code Playgroud)

我想在 Perl(版本 5.14)中做同样的事情。我可以获得该字符串的所有部分(除了最后一个小数部分)(%f)

如何在 Perl 中获得完全相同的字符串?

PS:我尝试使用Time::HiRes模块。

use Time::HiRes;
my ($seconds, $microseconds) = gettimeofday;
Run Code Online (Sandbox Code Playgroud)

如果我能用的话$secondslocaltime()有可能吗?如果是这样,那又如何呢?

原始问题的扩展:如果我有一个变量$time_value——假设我已经从某个地方检索了该变量中的时间戳字符串,我如何将其格式化为所需的格式,即以微秒为单位的时间戳?

Sch*_*ern 4

与 Python 最相似的方式是安装和使用DateTime。请注意,微秒不是标准strptime格式的一部分。DateTime 用于%N秒的小数部分。 %6N表示小数秒到 6 位(微秒)。

# `DateTime->now` uses seconds, so we have to supply our own
# hires time.
use Time::HiRes qw(time);
use DateTime;

print DateTime->from_epoch( epoch => time )->strftime('%Y-%m-%d %H:%M:%S.%6N');
Run Code Online (Sandbox Code Playgroud)