2009-07-18 11 views
3

Comment former une date/heure "floue" à partir de l'horodatage RFC 2822 formaté (Sat, 18 Jul 2009 10:57:43 +0300)?Comment former "date floue" dans Ruby?

Avec une date floue, je veux dire: "Il ya 5 minutes", "2 jours, 15 minutes".

Répondre

8

Rails donne à vos vues une fonction d'assistance appelée time_ago_in_words que vous pouvez appeler pour sortir un tel format à partir d'un objet Time.

+2

vous n » Je dois utiliser tous les rails pour cela. Vous pouvez simplement utiliser la gemme actionview: 'require 'rubygems'; require 'actionview'' – rampion

+0

Vous devriez éviter 'time_ago_in_words' car cela empêchera la mise en cache de vos vues - il y a un plugin jquery appelé' il y a longtemps 'qui remplacera cette fonctionnalité. – jessecurry

3
def fuzzy_date(date) 
    date = Date.parse(date, true) unless /Date.*/ =~ date.class.to_s 
    days = (date - Date.today).to_i 
    return 'today'  if days >= 0 and days < 1 
    return 'tomorrow' if days >= 1 and days < 2 
    return 'yesterday' if days >= -1 and days < 0 
    return "in #{days} days"  if days.abs < 60 and days > 0 
    return "#{days.abs} days ago" if days.abs < 60 and days < 0 
    return date.strftime('%A, %B %e') if days.abs < 182 
    return date.strftime('%A, %B %e, %Y') 
end 
Questions connexes