我需要两个日期和时间之间的小时数,分钟数,秒数。我能够获得天数,小时数,分钟数,秒数,但我不想要天数而不是它,我只需要几小时,几分钟,几秒钟。
这是我的代码,
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秒”
感谢您的帮助。
答案 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