时间差以小时计

时间:2009-04-09 23:37:43

标签: ruby time

我试图获得两个不同时间实例的小时差异。我从DB获取这些值作为:datetime列

如何在忽略或舍入分钟的同时将其包含在计算中的月份和年份?这只能手动完成还是有功能吗?

7 个答案:

答案 0 :(得分:132)

((date_2 - date_1) / 3600).round

((date_2 - date_1) / 1.hour).round

答案 1 :(得分:18)

https://rubygems.org/gems/time_difference

尝试Ruby的时差宝石
start_time = Time.new(2013,1)
end_time = Time.new(2014,1)
TimeDifference.between(start_time, end_time).in_years

答案 2 :(得分:11)

这很有效,例如用户创建帐户后的小时数

(Time.parse(DateTime.now.to_s) - Time.parse(current_user.created_at.to_s))/3600

答案 3 :(得分:7)

您可以使用名为time_diff的宝石来获取非常有用格式的时差

答案 4 :(得分:4)

您可以使用Rails的方法distance_of_time_in_words

distance_of_time_in_words(starting_time, ending_time, options = {include_seconds: true })

答案 5 :(得分:2)

在Rails中,现在有一种更自然的方法

> past = Time.now.beginning_of_year
2018-01-01 00:00:00 +0100

> (Time.now - past) / 1.day
219.50031326506948

答案 6 :(得分:1)

in_hours(Rails 6.1 +)

Rails 6.1引入了新的ActiveSupport::Duration转换方法,例如in_secondsin_minutesin_hoursin_daysin_weeksin_months ,和in_years

结果,现在,您的问题可以解决为:

date_1 = Time.parse('2020-10-19 00:00:00 UTC')
date_2 = Time.parse('2020-10-19 03:35:38 UTC') 

(date_2 - date_1).seconds.in_hours.to_i
# => 3

这里是a link to the corresponding PR