2010-04-20 11 views
5

¿Hay alguna gema de rubí que dará formato a las fechas relativas a la hora actual? Quiero resultados como "Mañana a las 5 p.m.", "Jueves de la próxima semana a las 5:15 p.m.", no estoy demasiado preocupado por la salida exacta, siempre y cuando sean fechas relativas en lenguaje naturalFormato fechas relativas

Respuesta

7

si tiene rieles, Creo que ActionView::Helpers::DateHelper#distance_of_time_in_words ayuda eso.

require 'rubygems' 
require 'action_view' 
include ActionView::Helpers::DateHelper 

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, true) # => less than 20 seconds 
distance_of_time_in_words(from_time, 3.years.from_now)    # => over 3 years 
distance_of_time_in_words(from_time, from_time + 60.hours)   # => about 3 days 
distance_of_time_in_words(from_time, from_time + 45.seconds, true) # => less than a minute 
distance_of_time_in_words(from_time, from_time - 45.seconds, true) # => less than a minute 
distance_of_time_in_words(from_time, 76.seconds.from_now)   # => 1 minute 
distance_of_time_in_words(from_time, from_time + 1.year + 3.days) # => about 1 year 
distance_of_time_in_words(from_time, from_time + 4.years + 9.days + 30.minutes + 5.seconds) # => over 4 years 

to_time = Time.now + 6.years + 19.days 
distance_of_time_in_words(from_time, to_time, true)  # => over 6 years 
distance_of_time_in_words(to_time, from_time, true)  # => over 6 years 
distance_of_time_in_words(Time.now, Time.now)   # => less than a minute 

En caso de relación con el momento actual, utilice distance_of_time_in_words_to_now en lugar de distance_of_time_in_words.

Si su aplicación está basada en rieles, simplemente use distance_of_time_in_words, distance_of_time_in_words_to_now, time_ago_in_words en vista.

+0

Justo lo que necesito, pero no uso de rieles :(¿Alguna idea de si los componentes Rails están disponibles fuera de los rieles? –

+0

Creo que el código anterior funcionará sin raíles, después de instalar Action Pack (gem install actionpack), pero no seguro. – unsouled

+0

@unsouled - Confirmado. – steenslag

-3

tratar la gema 'crónica'

que hace exactamente lo que se le pregunte.

+1

crónica parece hacer lo contrario: analiza los tiempos, no los formatea. –