Wie formuliere ich "unscharfe" Datum/Zeit von RFC 2822 formatiert (Sa, 18 Jul 2009 10:57:43 +0300) Zeitstempel?Wie man "fuzzy date" in Ruby bildet?
Mit fuzzy Datum meine ich wie: "vor 5 Minuten", "2 Tage, vor 15 Minuten".
Wie formuliere ich "unscharfe" Datum/Zeit von RFC 2822 formatiert (Sa, 18 Jul 2009 10:57:43 +0300) Zeitstempel?Wie man "fuzzy date" in Ruby bildet?
Mit fuzzy Datum meine ich wie: "vor 5 Minuten", "2 Tage, vor 15 Minuten".
Rails bietet Ihren Ansichten eine Hilfsfunktion namens time_ago_in_words
, die Sie aufrufen können, um ein solches Format von einem Time
Objekt auszugeben.
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
Es gibt einige wirklich starke Datum/Zeit-Parser in Ruby (leider ziemlich schwer zu Google (TM) für)
Sie don‘ Ich muss dafür alle Schienen benutzen. Sie könnten einfach das Actionview-Juwel verwenden: 'require 'rubygems'; require 'actionview'' – rampion
Sie sollten 'time_ago_in_words' vermeiden, da dies verhindert, dass Ihre Ansichten zwischengespeichert werden - es gibt ein jquery-Plugin namens' time ago ', das diese Funktionalität ersetzt. – jessecurry