Как вы вычитаете из даты? - PullRequest
17 голосов
/ 23 июля 2010

Я хотел бы написать простую функцию, которая скажет в часах:

Сколько времени прошло с момента его создания?

Мои попытки:

-time = DateTime.now.hour - (self.created_at.hour)

Кто-нибудь знает, как это сделать в Ruby on Rails?

Ответы [ 3 ]

24 голосов
/ 23 июля 2010

Rails обычно использует Time, а не DateTime.Почему ты не делаешь Time.now - self.created_at?Затем вы можете преобразовать секунды в часы, разделив их на 3600.

18 голосов
/ 23 июля 2010

Понял!Сначала вы должны убедиться, что ваши данные находятся в тех же данных, которые будут вычтены из времени или даты.Я выбрал время.Затем вы делите это на встроенные в Ruby методы времени.Это означает, сколько дней, но может быть и 1.час.и т. д.

(Time.now - self.created_at.to_time)/1.day
7 голосов
/ 23 июля 2010

Вы ищете функцию time_ago_in_words (from_time, include_seconds = false). Вот несколько примеров из документов:

time_ago_in_words(3.minutes.from_now)       # => 3 minutes
time_ago_in_words(Time.now - 15.hours)      # => 15 hours
time_ago_in_words(Time.now)                 # => less than a minute
from_time = Time.now - 3.days - 14.minutes - 25.seconds     # => 3 days
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...