2010-04-20 5 views
5

Existe-t-il une gemme ruby ​​qui formatera les dates par rapport à l'heure actuelle? Je veux sortie comme « Demain à 17 heures », « jeudi la semaine prochaine à 17h15 », je ne suis pas trop préoccupé par la sortie exacte, aussi longtemps que c'est des dates relatives en langage naturelFormat des dates relatives

Répondre

7

si vous avez des rails, Je pense que ActionView::Helpers::DateHelper#distance_of_time_in_words aide cela.

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 cas de rapport à l'heure actuelle, utilisez distance_of_time_in_words_to_now au lieu de distance_of_time_in_words. Si votre application est basée sur des rails, utilisez distance_of_time_in_words, distance_of_time_in_words_to_now, time_ago_in_words dans la vue.

+0

Juste ce dont j'ai besoin, mais ne pas utiliser des rails :(Toute idée si les composants Rails sont disponibles en dehors des rails –

+0

Je pense que le code ci-dessus fonctionnera sans rails, après l'installation pack action (gem install actionpack), mais pas chronique – unsouled

+0

@unsouled - Confirmée – steenslag

-3

essayer la gemme « chronique »

il fait exactement ce que vous demandez.

+1

chronique semble faire le contraire: elle analyse les temps, elle ne les met pas en forme. –