2015-09-03 7 views

ответ

11

Используйте строку формата.

(Time.now + 1.month).strftime("%B") 
# => "October" 
+0

работы. приму. –

+3

он работает, но игнорирует локаль –

+0

@ArupRakshit yep, это правда, но я подумал, что это может быть полезно упомянуть. –

26

Вы можете использовать MONTHNAMES Дейта постоянных

Date::MONTHNAMES[10] => "October" 
+0

В моем случае мне нужно было получить название месяца «let say September» от целого числа, что целое - это все, что у меня есть, и я не могу контролировать его, поэтому я использовал это '<% = Date :: MONTHNAMES [month] %> 'работал как шарм – saadlulu

12

Я думаю, что это должно быть сделано с помощью модуля I18n, поскольку strftime игнорирует локаль:

(Time.now + 1.month).strftime("%B") # => 'October' 

I18n.l(Time.now + 1.month, format: "%B") # => 'Oktober' 
+1

Я просто хотел опубликовать это. ЭТО ОСОБЕННО - лучшее решение, используя модуль I18n. –

7

Рубин Дата класса обеспечивает постоянный массив имен месяцев. Вы можете передать номер месяца в качестве индекса и получит название месяца

Date::MONTHNAMES[10] 
# November 

Чтобы получить сокращенное название месяца

Date::ABBR_MONTHNAMES[10] 
# Nov 

Или вы также можете получить название месяца от даты использования STRFTIME% B formater как

Date.today.strftime(%B) 
# September 

аналогично

(Time.now + 1.month).strftime('%B') 
# November 

Если ваше приложение многоязычное или используя язык другой, то английский, вы можете получить локализованы название месяца, используя I18N

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

Суммирует три варианта. Я предпочитаю индивидуальные ответы, которые проголосовали вверх и вниз, чтобы показать их относительные достоинства. –

Смежные вопросы