2011-01-30 28 views
87

Estoy usando Date.today.month para mostrar el número de mes. ¿Hay un comando para obtener el nombre del mes, o necesito presentar un caso para obtenerlo?Nombre de este mes (Date.today.month como nombre)

+1

Debe cambiar la respuesta aceptada, ya que en ruby ​​2 Dylan's no funciona. –

Respuesta

163

Date::MONTHNAMES[Date.today.month] le daría "enero". (Puede necesitar primero require 'date').

+0

Exactamente lo que estaba buscando gracias –

+16

'Date.today.strftime ("% B ")' es una mejor manera de hacerlo, imho. Y no es específico de los rieles. Ver respuesta a continuación por leafo. –

+0

Esto ya no funciona. no debe marcarse porque la respuesta correcta –

106

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" 
+0

La respuesta aceptada está bien, pero esto es mejor. Obviamente es específico de Rails, pero como la pregunta está etiquetada con Rails, creo que está bien. –

+0

Como creo, esta respuesta es mejor que otras porque I18n devuelve los nombres de meses en la configuración regional actual. –

70

Puede utilizar strftime:

Date.today.strftime("%B") # -> November 

http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/Date.html#strftime-method

+2

Solo una advertencia para cualquiera que use Ruby 2, debe usar 'Time.new.strftime (" B ")' Hoy y el tiempo se eliminan de Fecha – Sanarothe

+5

No es cierto. Ambos están implementados con [Ruby 2.0] (http://www.ruby-doc.org/stdlib-2.0.0/libdoc/date/rdoc/Date.html#strftime-method) y [Ruby 2.1] (http: //www.ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#strftime-method). Tenga en cuenta que no están disponibles hasta que '' requiera '' la fecha "', ya que están en el archivo std-lib, no en el núcleo. – pbyrne

11

para Ruby 1.9, tuve que usar:

Time.now.strftime("%B") 
10

Si tu c son acerca de la configuración regional, debe hacer esto:

I18n.l(Time.now, format: "%B") 
+0

o 'I18n.l (Date.current, formato: '% B')' – Stefan

+0

o 'I18n.l (Date.new, formato: '% B')' para comenzar en enero. Si desea agregar meses, como tener febrero, use 'Date.new + 1.month' –