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?


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


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"

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

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


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>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.