Nama bulan ini (Date.today.month sebagai nama)

115

Saya menggunakan Date.today.monthuntuk menampilkan nomor bulan. Apakah ada perintah untuk mendapatkan nama bulan, atau apakah saya perlu membuat kasus untuk mendapatkannya?

Rod Nelson
sumber
Jawaban Dylan masih berfungsi pada Ruby 2.5.0
oneWorkingHeadphone

Jawaban:

196

Date::MONTHNAMES[Date.today.month]akan memberimu "Januari". (Anda mungkin perlu require 'date'terlebih dahulu).

Dylan Markow
sumber
28
Date.today.strftime("%B")adalah cara yang lebih baik untuk melakukan ini, imho. Dan itu tidak spesifik untuk rel. Lihat jawaban di bawah oleh leafo.
Peter Berg
2
@PedroMorteRolo masih berfungsi untuk saya di Ruby 2.2.0 - pastikan untuk require 'date'terlebih dahulu.
Dylan Markow
121

Anda juga dapat menggunakan 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
sumber
Menurut saya, jawaban ini lebih baik daripada yang lain karena I18n mengembalikan nama bulan di lokasi saat ini.
Stepan Zakharov
16

Jika Anda peduli dengan lokalnya, Anda harus melakukan ini:

I18n.l(Time.current, format: "%B")
Yury Lebedev
sumber
atau I18n.l(Date.new, format: '%B')mulai dengan Januari. Jika Anda ingin menambahkan bulan, seperti memiliki Februari, gunakanDate.new + 1.month
Rui Nunes
13

Untuk Ruby 1.9 saya harus menggunakan:

Time.now.strftime("%B")
jpgeek.dll
sumber
0

HTML Pilih bulan dengan 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>
Abel
sumber