Ruby on rails从两个日期和时间获得小时,分钟,秒

时间:2017-12-15 09:17:24

标签: ruby-on-rails ruby

我需要两个日期和时间之间的小时数,分钟数,秒数。我能够获得天数,小时数,分钟数,秒数,但我不想要天数而不是它,我只需要几小时,几分钟,几秒钟。

这是我的代码,

start_time 星期三,2017年12月13日20:35:19 -0800 ,end_time是今天的日期时间

def time_diff(end_time, start_time)
   diff = end_time - start_time
   mm, ss = diff.divmod(60)
   hh, mm = mm.divmod(60)
   dd, hh = hh.divmod(24)
   time = "%d h, %d m, %d s" % [hh, mm, ss]
   return time
end

我需要这样的输出“35小时,29分钟,12秒”

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

出于好奇,纯粹的[几乎]功能性解决方案,没有中间局部变量:

start_time = DateTime.parse 'Wed, 13 Dec 2017 23:00:00 UTC'
end_time = DateTime.parse 'Wed, 15 Dec 2017 23:30:20 UTC'

sec, min, hrs = [60, 60, 1].
  map.
  with_object([[[end_time, start_time].
                  map(&:to_time).
                  map(&:to_i).
                  reduce(:-), nil]]) do |div, obj|
    obj << obj.last.first.divmod(div)
    obj[-2].rotate!
  end.
  map(&:first).
  compact

#⇒ [20, 30, 48]

答案 1 :(得分:0)

你已经得到了答案 - 只是不要除以24!

答案 2 :(得分:0)

如果start_time和end_time为DateTime值,则可以使用以下

difference = end_time - start_time
hours = (difference * 24).to_i
minutes = (difference * 24 * 60).to_i 
seconds = (difference * 24 * 60 * 60).to_i