Функции даты и времени «назад» в 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.