1

在 Ruby 中表示持续时间的最佳类是什么?

我正在编写一个具有distanceduration属性的运行模型。

如果我想使用分钟和秒,最指示的类是time. 然而,它不仅有分钟和秒,还有日、月等。在 Ruby 中存储持续时间的正确方法是什么?

稍后我需要对其进行计算,例如,平均速度 = 持续时间/距离,结果应该是分钟格式,即 5'30",而不是 5.50 分钟。

4

2 回答 2

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}"东西会给你你想要的输出。

于 2012-05-22T13:27:28.713 回答
1

Time.now.to_f, Time.now.to_i, Time.now.to_r给您自 Epoch (1970) 以来的秒数,因此您只需减去两个值即可找到持续时间。

更新如果您需要纳秒级分辨率,显式转换和@Eugene 的建议之间的唯一区别可能是精确控制。

于 2012-05-22T13:59:52.197 回答