如何在 perl 中漂亮地打印持续时间?
到目前为止我唯一能想到的是
my $interval = 1351521657387 - 1351515910623; # milliseconds
my $duration = DateTime::Duration->new(
seconds => POSIX::floor($interval/1000) ,
nanoseconds => 1000000 * ($interval % 1000),
);
my $df = DateTime::Format::Duration->new(
pattern => '%Y years, %m months, %e days, ' .
'%H hours, %M minutes, %S seconds, %N nanoseconds',
normalize => 1,
);
print $df->format_duration($duration);
这导致
0 years, 00 months, 0 days, 01 hours, 35 minutes, 46 seconds, 764000000 nanoseconds
这对我没有好处,原因如下:
- 我不想看到“ 0 years ”(空间浪费)&c,我不想从(如果我下次确实需要几年怎么办?)
pattern
- 我事先知道我的精度只有毫秒,我不想在纳秒部分看到 6 个零。
- 我更关心漂亮/紧凑/人类可读性,而不是精度/机器可读性。即,我想看到类似“ 1.2 年”或“ 3.22 个月”或“ 7.88 天”或“ 5.7 小时”或“ 75.5 分钟”(或“ 1.26 小时”,无论你觉得更好)或“ 24.7 秒”之类的东西或“ 133.7 毫秒” &c(类似于R打印difftime 的方式)