比较时间与毫秒

时间:2015-07-24 08:59:47

标签: ruby time

我有两个日期是开始日期和结束日期。我想得到一个新的时间对象,这是两者之间的差异。我所关心的差异是小时,分钟,秒和毫秒。我需要能够从包含毫秒差异

的结果创建一个新的Time对象
int()

我的问题是差异没有毫秒

我可以通过运行

看到时间有毫秒
>> require 'time'
=> true
>> start_time = Time.parse '1970-01-01T00:00:00.200'
=> 1970-01-01 00:00:00 +0000
>> end_time = Time.parse '1970-01-01T01:01:01.400'
=> 1970-01-01 01:01:01 +0000
>> difference = Time.at(end_time - start_time)
=> 1970-01-01 01:01:01 +0000

但是如何访问时差对象中的毫秒数。

关键是我在亚秒计算中工作时有几毫秒?

更新

我认为我对这个问题的第一次尝试并不像它应该的那样具有描述性,我为此道歉。

3 个答案:

答案 0 :(得分:3)

require 'time'
a = Time.now
sleep(0.5)
b = Time.now
b - a
# => 0.505087

毫秒!

编辑:微秒!

答案 1 :(得分:2)

Ruby的Time类具有纳秒精度:您可以使用Time#to_f获得自Unix时代以来的小数秒。如果你减去两个Time个对象,它们之间会得到一个小数秒。因此,要获得两次之间的毫秒数,请尝试:

((time2 - time1) * 1000).to_i

答案 2 :(得分:2)

  

我的问题是差异没有毫秒

确实有毫秒,Time#to_s / Time#inspect只是没有显示它。其输出相当于:strftime "%Y-%m-%d %H:%M:%S %z"

  

如何访问时差对象中的毫秒数。

usec返回微秒,nsec返回纳秒:

time = Time.at(0.2)
time.usec #=> 200000
time.nsec #=> 200000000

毫秒可以使用

time.usec / 1000 #=> 200