我想计算2次之间的差异.start_time:22:00(Rails将其解释为2015-12-31 22:00:00 +0100)second_time:02:00(Rails将此解释为2015-12-31 02:00:00 +0100).第二次是4小时后,所以在第二天.有没有办法计算这个差异?
我不能简单地这样做:second_time - first_time,因为这给了我22小时而不是4小时的差异.
编辑: 一些背景信息: 作业从22:00开始,到第二天02:00结束.因为我只填写这份工作的形式,所以上述2个值的时间是2015-12-31 22:00:00 +0100和2015-12-31 02:00:00 +0100.我不希望用户填写包括日期在内的时间.时间之间的真正差异应该是4个小时.
所以我真正想要的是计算22:00和02:00(第二天)之间的差异.
我不明白为什么你认为它应该返回4小时或为什么它会返回22小时.你的例子20小时是正确的:
require 'time' a = Time.parse('2015-12-31 22:00:00 +0100') b = Time.parse('2015-12-31 02:00:00 +0100') a - b #=> 72000.0 # difference in seconds (a - b) / 3600 #=> 20.0 # difference in hours
更新:您似乎只处理时间部分,而不是实际日期.我假设您必须处理的最大差异是24小时:
def time_difference(time_a, time_b) difference = time_b - time_a if difference > 0 difference else 24 * 3600 + difference end end a = Time.parse('2015-12-31 22:00:00 +0100') b = Time.parse('2015-12-31 02:00:00 +0100') time_difference(a, b) / 3600 # => 4 # hours a = Time.parse('2015-12-31 02:00:00 +0100') b = Time.parse('2015-12-31 22:00:00 +0100') time_difference(a, b) / 3600 # => 20 # hours