Mat*_*ice 0 ruby time ruby-on-rails
我想计算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
Run Code Online (Sandbox Code Playgroud)
更新:您似乎只处理时间部分,而不是实际日期.我假设您必须处理的最大差异是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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11565 次 |
| 最近记录: |