Perl:如何漂亮打印时差(持续时间)

Perl:如何漂亮打印时差(持续时间),第1张

概述如何在perl中打印持续时间? 到目前为止我唯一能想到的就是 my $interval = 1351521657387 - 1351515910623; # millisecondsmy $duration = DateTime::Duration->new( seconds => POSIX::floor($interval/1000) , nanoseconds => 10 如何在perl中打印持续时间?

到目前为止我唯一能想到的就是

my $interval = 1351521657387 - 1351515910623; # millisecondsmy $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年”(空间浪费)& c而且我不想从模式中删除“%Y年”(如果我下次需要多年怎么办?)
>我事先知道我的精度只有几毫秒,我不想看到纳秒部分的6个零.
>我关心的是漂亮/紧凑/人类可读性远远超过精度/机器可读性.即,我希望看到类似“1.2年”或“3.22个月”或“7.88天”或“5.7小时”或“75.5分钟”(或“1.26小时”,无论你看起来更好)或“24.7秒”之类的东西或“133.7毫秒”& c(类似于R打印difftime)

解决方法 您可以根据某些值是否为“true”动态构建模式.

...push @pattern,'%Y years' if $duration->year;push @pattern,'%m months' if $duration->month;...my $df = DateTime::Format::Duration->new(    pattern => join(',',@pattern),);print $df->format_duration($duration);
总结

以上是内存溢出为你收集整理的Perl:如何漂亮打印时差(持续时间)全部内容,希望文章能够帮你解决Perl:如何漂亮打印时差(持续时间)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1239354.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存