Функции даты и времени «назад» в Ruby / Rails

87

Мне было интересно, есть ли в Rails способ вычислить отметку времени, например, полминуты назад, 2 минуты назад, 1 день назад и т. Д. Что-то вроде отметки даты в реальном времени в Twitter.

Я хочу знать, есть ли в Ruby / Rails встроенная функция для такого преобразования даты и времени?

Капсо
источник

Ответы:

188

Ты можешь использовать:

10.minutes.ago
2.days.since

Или в ваших представлениях есть помощники:

distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)

Проверьте API, чтобы узнать подробности и дополнительные параметры.

Тоби Хеде
источник
8
В Rails 3 теперь 10.minutes.agoвместо минут.
cbron
4
Если вы не используете Rails require 'active_support'(по крайней мере, если установлен Rails 2.X).
JellicleCat 02
7
require 'active_support / all' или при использовании пакета: gem "activesupport",: require => "active_support"
Алиреза Элиадерани,
9

Вы можете использовать доступные методы , чтобы получить время в прошлом или будущем , используя ago, sinceпсевдоним для from_nowи множества доступных методов

Time.current
#=> Tue, 20 Sep 2016 15:03:30 UTC +00:00

2.minutes.ago
#=> Tue, 20 Sep 2016 15:01:30 UTC +00:00

2.minutes.since
#=> Tue, 20 Sep 2016 15:05:30 UTC +00:00 

1.month.ago
#=> Sat, 20 Aug 2016 15:03:30 UTC +00:00

1.year.since
#=> Wed, 20 Sep 2017 15:03:30 UTC +00:00 

Проверьте все доступные методы в классе Time

Дипак Махакале
источник
2

distance_of_time_in_words :

from_time = Time.now

distance_of_time_in_words(from_time, from_time + 50.minutes) # => about 1 hour
distance_of_time_in_words(from_time, 50.minutes.from_now) # => about 1 hour
distance_of_time_in_words(from_time, from_time + 15.seconds) # => less than a minute
distance_of_time_in_words(from_time, from_time + 15.seconds, include_seconds: true) # => less than 20 seconds

time_ago_in_words :

time_ago_in_words(3.minutes.from_now) # => 3 minutes
time_ago_in_words(3.minutes.ago) # => 3 minutes
time_ago_in_words(Time.now - 15.hours) # => about 15 hours
Дориан
источник