Funkcje daty / czasu „Ago” w Ruby / Rails


87

Zastanawiałem się, czy w Railsach jest sposób na obliczenie znacznika czasu - pół minuty temu, 2 minuty temu, 1 dzień temu itd. Coś w rodzaju twitterowego znacznika daty w czasie rzeczywistym.

Chcę wiedzieć, czy Ruby / Rails ma wbudowaną funkcję do takiej konwersji daty i czasu?

Odpowiedzi:


188

Możesz użyć:

10.minutes.ago
2.days.since

Lub w swoich poglądach masz pomocników:

distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)

Sprawdź interfejs API, aby uzyskać szczegółowe informacje i więcej opcji.


8
Od Rails 3 teraz 10.minutes.agozamiast min.
cbron

4
Jeśli jesteś poza Railsami require 'active_support'(przynajmniej jeśli zainstalowano Rails 2.X).
JellicleCat

7
wymagają „active_support / all” lub w przypadku korzystania z pakietu: gem „activesupport”,: require => „active_support”
Alireza Eliaderani

9

Można użyć dostępnych metod, aby uzyskać czas w przeszłości lub przyszłości użyciu ago, sincealias dla from_nowi wiele dostępnych metod

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 

Sprawdź wszystkie dostępne metody w klasie 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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.