Название этого месяца (Date.today.month как название)

115

Я использую Date.today.monthдля отображения номера месяца. Есть ли команда, чтобы получить название месяца, или мне нужно сделать случай, чтобы получить это?

Род Нельсон
источник
Ответ Дилана по-прежнему работает с Ruby
2.5.0

Ответы:

196

Date::MONTHNAMES[Date.today.month]даст вам "Январь". (Вам может понадобиться require 'date'сначала).

Дилан Маркоу
источник
28
Date.today.strftime("%B")это лучший способ сделать это, имхо. И это не относится к рельсам. См. Ответ ниже на leafo.
Питер Берг
2
@PedroMorteRolo все еще работает у меня на Ruby 2.2.0 - require 'date'сначала обязательно.
Дилан Маркоу
121

Вы также можете использовать 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
источник
На мой взгляд, этот ответ лучше других, потому что I18n возвращает названия месяцев в текущей локали.
Степан Захаров
80

Вы можете использовать strftime:

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

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

leafo
источник
2
Просто предупреждение для всех, кто использует Ruby 2, необходимо использовать Time.new.strftime("B")Today и strftime,
удаленные
7
Не правда. Оба они используются в Ruby 2.0 и Ruby 2.1 . Обратите внимание, что они недоступны до вас require "date", так как они находятся в std-lib, а не в ядре.
pbyrne 02
16

Если вам важна локаль, сделайте следующее:

I18n.l(Time.current, format: "%B")
Юрий Лебедев
источник
или I18n.l(Date.new, format: '%B')начать с января. Если вы хотите добавить месяцы, например, февраль, используйтеDate.new + 1.month
Rui Nunes
13

Для Ruby 1.9 мне пришлось использовать:

Time.now.strftime("%B")
jpgeek
источник
0

HTML Выберите месяц с 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>
Абель
источник