Функція дати та часу “Ago” в Ruby / Rails


87

Мені цікаво, чи є в Rails спосіб обчислити позначку часу, як - півхвилини тому, 2 хвилини тому, 1 день тому тощо. Щось на зразок штемпельної дати в реальному часі.

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

Відповіді:


187

Ви можете використовувати:

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

7
потрібно '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.