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".
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".
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
.
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
Il y a quelques parseurs date/heure vraiment puissants rubis (malheureusement un peu difficile à Google (TM) pour)
vous n » Je dois utiliser tous les rails pour cela. Vous pouvez simplement utiliser la gemme actionview: 'require 'rubygems'; require 'actionview'' – rampion
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