Name dieses Monats (Date.today.month als Name)

115

Ich verwende Date.today.month, um die Monatsnummer anzuzeigen. Gibt es einen Befehl, um den Monatsnamen zu erhalten, oder muss ich einen Fall machen, um ihn zu erhalten?

Rod Nelson
quelle
Dylans Antwort funktioniert immer noch ab Ruby 2.5.0
oneWorkingHeadphone

Antworten:

196

Date::MONTHNAMES[Date.today.month]würde dir "Januar" geben. (Möglicherweise müssen Sie require 'date'zuerst).

Dylan Markow
quelle
28
Date.today.strftime("%B")ist ein besserer Weg, dies zu tun, imho. Und es ist nicht spezifisch für Schienen. Siehe Antwort unten von leafo.
Peter Berg
2
@PedroMorteRolo funktioniert immer noch für mich unter Ruby 2.2.0 - stellen Sie sicher, dass Sie require 'date'zuerst.
Dylan Markow
121

Sie können auch I18n verwenden:

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"
grilix
quelle
Wie ich denke, ist diese Antwort besser als andere, da I18n Monatsnamen im aktuellen Gebietsschema zurückgibt.
Stepan Zakharov
16

Wenn Sie sich für das Gebietsschema interessieren, sollten Sie Folgendes tun:

I18n.l(Time.current, format: "%B")
Yury Lebedev
quelle
oder I18n.l(Date.new, format: '%B')um mit Januar zu beginnen. Wenn Sie Monate hinzufügen möchten, z. B. Februar, verwenden SieDate.new + 1.month
Rui Nunes
13

Für Ruby 1.9 musste ich verwenden:

Time.now.strftime("%B")
jpgeek
quelle
0

HTML Monat mit I18n auswählen:

<select>
  <option value="">Choose month</option>
  <%= 1.upto(12).each do |month| %>
    <option value="<%= month %>"><%= I18n.t("date.month_names")[month] %></option>
  <% end %>
</select>
Abel
quelle