Nom de ce mois (Date.today.month comme nom)

115

J'utilise Date.today.monthpour afficher le numéro du mois. Existe-t-il une commande pour obtenir le nom du mois ou dois-je faire une demande pour l'obtenir?

Rod Nelson
la source
La réponse de Dylan fonctionne toujours à partir de Ruby 2.5.0
oneWorkingHeadphone

Réponses:

196

Date::MONTHNAMES[Date.today.month]vous donnerait "Janvier". (Vous devrez peut-être d' require 'date'abord).

Dylan Markow
la source
28
Date.today.strftime("%B")est une meilleure façon de faire cela, à mon humble avis. Et ce n'est pas spécifique aux rails. Voir la réponse ci-dessous par notice.
Peter Berg
2
@PedroMorteRolo fonctionne toujours pour moi sur Ruby 2.2.0 - assurez-vous d' require 'date'abord.
Dylan Markow
121

Vous pouvez également utiliser 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"
grilix
la source
Comme je pense, cette réponse est meilleure que d'autres car I18n renvoie les noms des mois dans la langue actuelle.
Stepan Zakharov
80

Vous pouvez utiliser strftime:

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

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

leafo
la source
2
Juste un avertissement pour tous ceux qui utilisent Ruby 2, Time.new.strftime("B")je dois utiliser Today & strftime sont supprimés de Date
Sanarothe
7
Pas vrai. Les deux sont en place avec Ruby 2.0 et Ruby 2.1 . Notez qu'ils ne sont disponibles que vous require "date", puisqu'ils sont dans la bibliothèque std, pas dans le noyau.
pbyrne
16

Si vous vous souciez des paramètres régionaux, vous devriez faire ceci:

I18n.l(Time.current, format: "%B")
Yury Lebedev
la source
ou I18n.l(Date.new, format: '%B')pour commencer avec janvier. Si vous voulez ajouter des mois, comme avoir février, utilisezDate.new + 1.month
Rui Nunes
13

Pour Ruby 1.9, j'ai dû utiliser:

Time.now.strftime("%B")
jpgeek
la source
0

HTML Sélectionnez le mois avec 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>
Abel
la source