Nombre de este mes (Date.today.month como nombre)

115

Estoy usando Date.today.monthpara mostrar el número del mes. ¿Existe un comando para obtener el nombre del mes, o necesito hacer un caso para obtenerlo?

Rod Nelson
fuente
La respuesta de Dylan todavía funciona a partir de Ruby 2.5.0
oneWorkingHeadphone

Respuestas:

196

Date::MONTHNAMES[Date.today.month]le daría "enero". (Es posible que deba hacerlo require 'date'primero).

Dylan Markow
fuente
28
Date.today.strftime("%B")es una mejor manera de hacer esto, en mi humilde opinión. Y no es específico de los rieles. Vea la respuesta a continuación por leafo.
Peter Berg
2
@PedroMorteRolo todavía me funciona en Ruby 2.2.0 - asegúrate de hacerlo require 'date'primero.
Dylan Markow
121

También puede utilizar 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
fuente
Como creo, esta respuesta es mejor que otras porque I18n devuelve nombres de meses en la configuración regional actual.
Stepan Zakharov
16

Si le importa la configuración regional, debe hacer lo siguiente:

I18n.l(Time.current, format: "%B")
Yury Lebedev
fuente
o I18n.l(Date.new, format: '%B')empezar en enero. Si desea agregar meses, como tener febrero, useDate.new + 1.month
Rui Nunes
13

Para Ruby 1.9 tuve que usar:

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

HTML Seleccionar mes con 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
fuente