时间差以小时计

ste*_*ard 65 ruby time

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

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

Rôm*_*con 135

((date_2 - date_1) / 3600).round
Run Code Online (Sandbox Code Playgroud)

要么

((date_2 - date_1) / 1.hour).round
Run Code Online (Sandbox Code Playgroud)

  • 这不适合我.也许它自2009年以来发生了变化?现在,我必须做`(date_2 - date_1)*24`来获得时间 (9认同)

小智 18

在https://rubygems.org/gems/time_difference上尝试Ruby的Time Difference gem

start_time = Time.new(2013,1)
end_time = Time.new(2014,1)
TimeDifference.between(start_time, end_time).in_years
Run Code Online (Sandbox Code Playgroud)


Din*_*eic 12

这非常有用,例如自用户创建帐户以来的小时数

(Time.parse(DateTime.now.to_s) - Time.parse(current_user.created_at.to_s))/3600
Run Code Online (Sandbox Code Playgroud)


Abh*_*M A 6

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


Mar*_*n13 6

in_hours(Rails 6.1+)

Rails 6.1 引入了新的ActiveSupport::Duration转换方法,例如in_seconds、in_minutes、in_hours、in_days、in_weeks、in_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
Run Code Online (Sandbox Code Playgroud)

这是相应 PR 的链接。