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.