用Ruby表示持续时间的最佳类是什么?
我正在编写一个具有distance
和duration
属性的运行模型。
如果我想使用分钟和秒钟,最明显的类将是time
。然而,它不仅仅是分钟和秒,而且还有日,月等。在Ruby中存储持续时间的正确方法是什么?
我稍后需要进行计算,例如平均速度=持续时间/距离,结果应采用分钟格式,即5'30“,而不是5.50 min。
答案 0 :(得分:3)
我使用这样的方法来计算Resque
作业的运行时间:
start = Time.now
#code goes here
finish = Time.now
seconds = sprintf("%0.02f", (finish - start) % 60)
minutes = (((finish - start) / 60) % 60).to_i
在这个例子中,我要出现百分之一秒,但是如果需要的话,你可以调整一下,如果你愿意的话可以一起摆脱sprintf
。那将基本上让你seconds = (finish - start) % 60
然后一个简单的puts #{minutes}'#{seconds}"
可以得到你想要的输出。
答案 1 :(得分:0)
Time.now.to_f
,Time.now.to_i
,Time.now.to_r
从Epoch(1970)开始给你一些秒数,所以你可以找到持续时间只减去两个值。
UPDATE 如果您需要纳秒分辨率,显式转换和@Eugene建议的唯一区别可能是精确控制。