到目前为止我唯一能想到的就是
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)
...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:如何漂亮打印时差(持续时间)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)