Разница во времени в часах - PullRequest
64 голосов
/ 10 апреля 2009

Я пытаюсь получить разницу в часах для двух разных экземпляров времени. Я получаю эти значения из БД в виде столбца: datetime

Как я могу сделать это так, чтобы в расчет включались также месяцы и годы при игнорировании или округлении минут? Это можно сделать только вручную или есть функция для этого?

Ответы [ 6 ]

132 голосов
/ 10 апреля 2009
((date_2 - date_1) / 3600).round

или

((date_2 - date_1) / 1.hour).round
18 голосов
/ 18 апреля 2013

Драгоценный камень Разница во времени для Рубина на https://rubygems.org/gems/time_difference

start_time = Time.new(2013,1)
end_time = Time.new(2014,1)
TimeDifference.between(start_time, end_time).in_years
11 голосов
/ 28 августа 2011

это прекрасно работает, например, количество часов с момента создания учетной записи пользователя

(Time.parse(DateTime.now.to_s) - Time.parse(current_user.created_at.to_s))/3600
7 голосов
/ 09 марта 2011

Вы можете использовать гем под названием time_diff , чтобы получить разницу во времени в очень полезных форматах

4 голосов
/ 12 июня 2017

Вы можете использовать метод Rails distance_of_time_in_words

distance_of_time_in_words(starting_time, ending_time, options = {include_seconds: true })
2 голосов
/ 08 августа 2018

В Rails теперь есть гораздо более естественный способ для достижения этой цели:

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

> (Time.now - past) / 1.day
219.50031326506948
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...