当前位置:  开发笔记 > 编程语言 > 正文

Ruby:计算2次之间的时差

如何解决《Ruby:计算2次之间的时差》经验,为你挑选了1个好方法。

我想计算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(第二天)之间的差异.



1> spickermann..:

我不明白为什么你认为它应该返回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

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有