Funzioni data / ora "Ago" in Ruby / Rails


87

Mi chiedevo se ci fosse un modo in Rails per calcolare il timestamp come - mezzo minuto fa, 2 minuti fa, 1 giorno fa ecc. Qualcosa come il timbro data in tempo reale di twitter.

Voglio sapere se Ruby / Rails ha una funzione incorporata per tale conversione data-ora?

Risposte:


188

Puoi usare:

10.minutes.ago
2.days.since

O nelle tue opinioni hai gli aiutanti:

distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)

Controlla l'API per dettagli e altre opzioni.


8
A partire da Rails 3 è ora 10.minutes.agoinvece di min.
cbron

4
Se sei al di fuori di Rails, require 'active_support'(almeno se Rails 2.X è installato).
JellicleCat

7
require 'active_support / all' o se si utilizza il bundle: gem "activesupport",: require => "active_support"
Alireza Eliaderani

9

È possibile utilizzare i metodi disponibili per ottenere il tempo passato o futuro utilizzando ago, sincealias per from_nowe molti metodi disponibili

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 

Controlla tutti i metodi disponibili nella classe 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.