"Vor" Datums- / Zeitfunktionen in Ruby / Rails

86

Ich habe mich gefragt, ob es in Rails eine Möglichkeit gibt, Zeitstempel wie vor einer halben Minute, vor zwei Minuten, vor einem Tag usw. zu berechnen. So etwas wie ein Echtzeit-Datumsstempel von Twitter.

Ich möchte wissen, ob Ruby / Rails eine integrierte Funktion für eine solche Datums- / Uhrzeitkonvertierung hat.

Kapso
quelle

Antworten:

183

Sie können verwenden:

10.minutes.ago
2.days.since

Oder aus Ihrer Sicht haben Sie die Helfer:

distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)

Überprüfen Sie die API auf Details und weitere Optionen.

Toby Hede
quelle
8
Ab Rails 3 ist es jetzt 10.minutes.agostatt Minuten.
Cbron
4
Wenn Sie sich außerhalb von Rails befinden require 'active_support'(zumindest wenn Rails 2.X installiert ist).
JellicleCat
7
erfordern 'active_support / all' oder bei Verwendung von bundle: gem "activesupport" ,: require => "active_support"
Alireza Eliaderani
8

Sie können verfügbare Methoden verwenden , um die Zeit in Vergangenheit oder Zukunft mit zu bekommen ago, sincealias für from_nowund viele verfügbaren Methoden

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 

Überprüfen Sie alle verfügbaren Methoden in Zeitklasse

Deepak Mahakale
quelle
2

Entfernung_der_Zeit_in_Wörtern :

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
Dorian
quelle