Nome di questo mese (Date.today.month come nome)


115

Sto usando Date.today.monthper visualizzare il numero del mese. Esiste un comando per ottenere il nome del mese o devo creare un caso per ottenerlo?


La risposta di Dylan funziona ancora a partire da Ruby 2.5.0
oneWorkingHeadphone

Risposte:


196

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


28
Date.today.strftime("%B")è un modo migliore per farlo, imho. E non è specifico per i binari. Vedi la risposta sotto di leafo.
Peter Berg

2
@PedroMorteRolo funziona ancora per me su Ruby 2.2.0 - assicurati di require 'date'prima.
Dylan Markow

121

Puoi anche usare 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"

Come penso, questa risposta è migliore di altre perché I18n restituisce i nomi dei mesi nella locale corrente.
Stepan Zakharov


16

Se ti interessa il locale, dovresti farlo:

I18n.l(Time.current, format: "%B")

o I18n.l(Date.new, format: '%B')per iniziare con gennaio. Se vuoi aggiungere mesi, come avere febbraio, usaDate.new + 1.month
Rui Nunes

13

Per Ruby 1.9 ho dovuto usare:

Time.now.strftime("%B")

0

HTML Seleziona mese con I18n:

<select>
  <option value="">Choose month</option>
  <%= 1.upto(12).each do |month| %>
    <option value="<%= month %>"><%= I18n.t("date.month_names")[month] %></option>
  <% end %>
</select>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.