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.