2010-07-19 6 views
75

Je me demandais s'il y avait un moyen dans Rails pour calculer l'horodatage comme - il y a une minute, 2 minutes, il y a 1 jour etc. Quelque chose comme twitter date réelle timbre .Fonctions date/heure "Ago" dans Ruby/Rails

Je veux savoir si Ruby/Rails a une fonction intégrée pour cette conversion date-heure?

Répondre

151

Vous pouvez utiliser:

10.minutes.ago 
2.days.since 

Ou dans votre point de vue vous avez les aides:

distance_of_time_in_words(from_time, to_time) 
time_ago_in_words(from_time) 

Vérifiez the API pour plus de détails et plus d'options.

+8

A partir de Rails 3, c'est maintenant '10.minutes.ago' au lieu de mins. – cbron

+4

Si vous êtes en dehors de Rails, 'require 'active_support'' (au moins si Rails 2.X est installé). – JellicleCat

+7

nécessite 'active_support/all' ou si vous utilisez bundle: gem "activesupport",: require => "active_support" – cubny

5

Vous pouvez utiliser les méthodes disponibles pour obtenir le temps dans le passé ou futur en utilisant ago, alias since pour from_now et de nombreuses méthodes 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 

Vérifiez toutes les méthodes disponibles dans Time classe

0

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 
Questions connexes