Назва цього місяця (Date.today.month як ім’я)


115

Я використовую Date.today.monthдля відображення номера місяця. Чи є команда отримати ім'я місяця, чи мені потрібно зробити справу, щоб отримати його?


Відповідь Ділана як і раніше працює як Ruby 2.5.0
oneWorkingHeadphone

Відповіді:


196

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


28
Date.today.strftime("%B")це кращий спосіб зробити це, imho. І це не конкретно для рейок. Відповідь дивіться нижче від 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"

Як я думаю, ця відповідь краща за інші, тому що I18n повертає місячні імена в поточному мові.
Степан Захаров

80

Ви можете використовувати strftime:

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

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


2
Просто попередження для тих, хто використовує Ruby 2, треба використовувати Time.new.strftime("B")сьогодні & стрийпл знімається з Date
Sanarothe

7
Неправда. Обидва стоять на місці з Ruby 2.0 та Ruby 2.1 . Зауважте, що вони доступні лише до вас require "date", оскільки вони знаходяться в std-lib, а не в core.
pbyrne

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

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>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.