2011-01-30 13 views
87

Sto usando Date.today.month per visualizzare il numero del mese. Esiste un comando per ottenere il nome del mese o devo presentare un caso per ottenerlo?Nome di questo mese (Date.today.month come nome)

+1

È necessario modificare la risposta accettata, poiché in ruby ​​2 Dylan non funziona. –

risposta

163

Date::MONTHNAMES[Date.today.month] ti darebbe "Gennaio". (Potrebbe essere necessario prima il require 'date').

+0

Esattamente quello che stavo cercando grazie –

+16

'Date.today.strftime ("% B ")' è un modo migliore per farlo, imho. E non è specifico per le rotaie. Vedi la risposta sotto per leafo. –

+0

Questo non funziona più. dovrebbe essere deselezionato come risposta corretta –

106

È inoltre possibile utilizzare I18n:

I18n.t("date.month_names") # [nil, "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] 
I18n.t("date.abbr_month_names") # [nil, "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] 
I18n.t("date.month_names")[Date.today.month] # "December" 
I18n.t("date.abbr_month_names")[Date.today.month] # "Dec" 
+0

La risposta accettata va bene, ma è meglio. Ovviamente specifico per Rails, ma visto che la domanda è taggata con Rails, immagino che vada bene. –

+0

Come penso, questa risposta è migliore di altre perché I18n restituisce i nomi dei mesi nelle impostazioni locali correnti. –

70

È possibile utilizzare strftime:

Date.today.strftime("%B") # -> November 

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/Date.html#strftime-method

+2

Solo un avvertimento per chiunque usi Ruby 2, devo usare 'Time.new.strftime (" B ")' Oggi & strftime sono spogliati da Data – Sanarothe

+5

Non vero. Entrambe sono disponibili con [Ruby 2.0] (http://www.ruby-doc.org/stdlib-2.0.0/libdoc/date/rdoc/Date.html#strftime-method) e [Ruby 2.1] (http: //www.ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#strftime-method). Nota che non sono disponibili fino a quando non "richiedi" la data "', dal momento che sono nella std-lib, non nel core. – pbyrne

11

per Ruby 1.9 ho dovuto usare:

Time.now.strftime("%B") 
10

Se tu c Riguarda il locale, è necessario effettuare questa operazione:

I18n.l(Time.now, format: "%B") 
+0

o 'I18n.l (Date.current, format: '% B')' – Stefan

+0

o 'I18n.l (Date.new, formato: '% B')' per iniziare con gennaio. Se vuoi aggiungere mesi, come febbraio, usa 'Date.new + 1.month' –

Problemi correlati