在 Ruby 中表示持续时间的最佳类是什么?
我正在编写一个具有distance
和duration
属性的运行模型。
如果我想使用分钟和秒,最指示的类是time
. 然而,它不仅有分钟和秒,还有日、月等。在 Ruby 中存储持续时间的正确方法是什么?
稍后我需要对其进行计算,例如,平均速度 = 持续时间/距离,结果应该是分钟格式,即 5'30",而不是 5.50 分钟。
在 Ruby 中表示持续时间的最佳类是什么?
我正在编写一个具有distance
和duration
属性的运行模型。
如果我想使用分钟和秒,最指示的类是time
. 然而,它不仅有分钟和秒,还有日、月等。在 Ruby 中存储持续时间的正确方法是什么?
稍后我需要对其进行计算,例如,平均速度 = 持续时间/距离,结果应该是分钟格式,即 5'30",而不是 5.50 分钟。
我使用这样的东西来计算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}"
东西会给你你想要的输出。
Time.now.to_f
, Time.now.to_i
, Time.now.to_r
给您自 Epoch (1970) 以来的秒数,因此您只需减去两个值即可找到持续时间。
更新如果您需要纳秒级分辨率,显式转换和@Eugene 的建议之间的唯一区别可能是精确控制。