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?


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


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"

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

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

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>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.