Tên của tháng này (Date.today.month as name)


115

Tôi đang sử dụng Date.today.monthđể hiển thị số tháng. Có lệnh để lấy tên tháng hay tôi cần tạo một trường hợp để lấy nó?


Câu trả lời Dylan vẫn hoạt động như Ruby 2.5.0
oneWorkingHeadphone

Câu trả lời:


196

Date::MONTHNAMES[Date.today.month]sẽ cung cấp cho bạn "tháng Giêng". (Bạn có thể cần phải làm require 'date'trước).


28
Date.today.strftime("%B")là một cách tốt hơn để làm điều này, imho. Và nó không dành riêng cho đường ray. Xem câu trả lời dưới đây của leafo.
Peter Berg

2
@PedroMorteRolo vẫn hoạt động đối với tôi trên Ruby 2.2.0 - require 'date'trước tiên hãy đảm bảo điều đó .
Dylan Markow

121

Bạn cũng có thể sử dụng 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"

Theo tôi nghĩ, câu trả lời này tốt hơn những câu khác vì I18n trả về tên tháng ở ngôn ngữ hiện tại.
Stepan Zakharov

80

Bạn có thể sử dụng strftime:

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

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


2
Chỉ cần một lời cảnh báo cho bất cứ ai sử dụng Ruby 2, gotta sử dụng Time.new.strftime("B")Hôm nay & strftime được tước từ ngày
Sanarothe

7
Không đúng. Cả hai đều có sẵn với Ruby 2.0Ruby 2.1 . Lưu ý rằng chúng không có sẵn cho đến khi bạn require "date", vì chúng nằm trong std-lib, không phải cốt lõi.
pbyrne

16

Nếu bạn quan tâm đến ngôn ngữ, bạn nên làm như sau:

I18n.l(Time.current, format: "%B")

hoặc I18n.l(Date.new, format: '%B')bắt đầu với tháng Giêng. Nếu bạn muốn thêm tháng, giống như có tháng Hai, sử dụngDate.new + 1.month
Rui Nunes

13

Đối với Ruby 1.9, tôi phải sử dụng:

Time.now.strftime("%B")

0

HTML Chọn tháng với 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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.