如何在Perl中打印持續時間?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年」(space waste)& ca nd我不想從
pattern
刪除「%Y年」(如果我下次需要幾年呢?) - 我事先知道我的精度只有毫秒,我不想看到納秒中的6個零。
- 我關心漂亮/緊湊/人類的可讀性遠遠超過精度/機器的可讀性。也就是說,我希望看到類似「1.2年」或「3.22個月」或「7.88天」或「5.7小時」或「75.5分鐘」(或「1.26小時,無論看起來不如你)或 「24.7秒」 或 「133.7毫秒」 & C(類似於如何[R打印difftime)
時間/持續時間的標準國際格式爲'0y 4m 7d 1h 35m 46.764s',即每個組件單元的單字符後綴。 –
那麼我該如何製作呢?爲什麼這不是默認? – sds