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?


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


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"

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


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

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

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>
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.