Funciones de fecha / hora "Ago" en Ruby / Rails

87

Me preguntaba si hay una forma en Rails de calcular la marca de tiempo como: hace medio minuto, hace 2 minutos, hace 1 día, etc. Algo como la marca de fecha en tiempo real de Twitter.

Quiero saber si Ruby / Rails tiene una función incorporada para dicha conversión de fecha y hora.

kapso
fuente

Respuestas:

188

Puedes usar:

10.minutes.ago
2.days.since

O en sus puntos de vista tiene los ayudantes:

distance_of_time_in_words(from_time, to_time)
time_ago_in_words(from_time)

Consulte la API para obtener detalles y más opciones.

Toby Hede
fuente
8
A partir de Rails 3 es ahora en 10.minutes.agolugar de minutos.
cbron
4
Si está fuera de Rails require 'active_support'(al menos si está instalado Rails 2.X).
JellicleCat
7
require 'active_support / all' o si usas bundle: gem "activesupport",: require => "active_support"
Alireza Eliaderani
9

Puede utilizar los métodos disponibles para obtener el tiempo en pasado o futuro uso ago, sincealias para from_nowy muchos métodos disponibles

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 

Consulta todos los métodos disponibles en la clase Time.

Deepak Mahakale
fuente
2

distancia_de_tiempo_en_palabras :

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
dorio
fuente