【发布时间】:2011-12-14 15:54:40
【问题描述】:
TL;DR:我需要得到
HH:MM:SS.ms和HH:MM:SS.ms之间的区别HH:MM:SS:ms
我需要什么:
这是一个棘手的问题。我正在尝试计算两个时间戳之间的差异,如下所示:
In: 00:00:10.520
Out: 00:00:23.720
应该交付:
Diff: 00:00:13.200
我想我会将时间解析为实际的 Time 对象并使用其中的差异。这在前一种情况下效果很好,并返回00:0:13.200。
什么不起作用:
但是,对于某些人来说,这不起作用,因为 Ruby 使用 usec 而不是 msec:
In: 00:2:22.760
Out: 00:2:31.520
Diff: 00:0:8.999760
显然,区别应该是00:00:8:760 而不是00:00:8.999760。 我真的很想tdiff.usec.to_s.gsub('999','') ......
到目前为止我的代码:
这是我目前的代码(这些是从“0:00:10:520”等输入字符串中解析出来的)。
tin_first, tin_second = ins.split(".")
tin_hours, tin_minutes, tin_seconds = tin_first.split(":")
tin_usec = tin_second * 1000
tin = Time.gm(0, 1, 1, tin_hours, tin_minutes, tin_seconds, tin_usec)
tout 也是如此。那么:
tdiff = Time.at(tout-tin)
对于输出,我使用:
"00:#{tdiff.min}:#{tdiff.sec}.#{tdiff.usec}"
有没有更快的方法来做到这一点?请记住,我只是想要两次之间的差异。我错过了什么?
我目前正在使用 Ruby 1.9.3p6。
【问题讨论】:
标签: ruby time datetime-conversion