红宝石的持续时间

时间:2012-05-22 13:21:48

标签: ruby ruby-on-rails-3

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

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

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

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

2 个答案:

答案 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_fTime.now.to_iTime.now.to_r从Epoch(1970)开始给你一些秒数,所以你可以找到持续时间只减去两个值。

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