Rails-更简单的方法来获得一天中的几个小时?

Rails-ier way to get hours in a day?

我需要知道夏令时有多少小时,结果是这样的:

>(Time.zone.parse('31-10-2021').end_of_day - Time.zone.parse('31-10-2021').beginning_of_day)/3600
=> 24.99999999999972

有没有更Rails的方法?类似于 Date.parse('31-10-2021').hoursDate.parse('31-10-2021').hours_in_day ?

如果您使用的是 Rails 6.1,则可以使用 ActiveSupport::Duration#in_hours:

hours = Time.zone.new(2021, 10, 31).then do |day|
  (day.beginning_of_day-day.end_of_day).in_hours
                                       .round.to_i # optional 
end

在旧版本的 Rails 中,您可以:

hours = Time.zone.new(2021, 10, 31).then do |day|
  ((day.beginning_of_day-day.end_of_day) / 1.hour).round.to_i
end