Как Вы вычитаете из даты и времени?

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

Сколько передало время, так как это было создано?

Мои попытки:

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

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

17
задан Bruno Casali 27 October 2016 в 20:00
поделиться

3 ответа

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

24
ответ дан 30 November 2019 в 10:45
поделиться

Вы ищете функцию 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
7
ответ дан 30 November 2019 в 10:45
поделиться

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

(Time.now - self.created_at.to_time)/1.day
18
ответ дан 30 November 2019 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: