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?


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).


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"

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")

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")

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>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.