2011-01-30 25 views
87

Tôi đang sử dụng Date.today.month để hiển thị số tháng. Có một lệnh để có được tên tháng, hoặc tôi cần phải làm cho một trường hợp để có được nó?Tên của tháng này (Date.today.month as name)

+1

Bạn nên thay đổi câu trả lời được chấp nhận, vì trong ruby ​​2 Dylan không hoạt động. –

Trả lời

163

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

+0

Chính xác những gì tôi đang tìm kiếm cảm ơn –

+16

'Date.today.strftime ("% B ")' là một cách tốt hơn để làm điều này, imho. Và nó không cụ thể cho đường ray. Xem câu trả lời dưới đây bởi leafo. –

+0

Điều này không hoạt động nữa. nó phải được bỏ đánh dấu là câu trả lời đúng –

106

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" 
+0

Câu trả lời được chấp nhận là tốt, nhưng điều này là tốt hơn. Rõ ràng là Rails-cụ thể, nhưng như câu hỏi được gắn thẻ với Rails, tôi đoán đó là tốt. –

+0

Như tôi nghĩ, câu trả lời này là tốt hơn so với những người khác vì I18n trả về tên tháng trong ngôn ngữ hiện tại. –

70

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ỉ là một cảnh báo cho bất kỳ ai sử dụng Ruby 2, phải sử dụng 'Thời gian.new.strftime (" B ")' Hôm nay & strftime bị tước khỏi Ngày – Sanarothe

+5

Không đúng sự thật. Cả hai đều được thực hiện với [Ruby 2.0] (http://www.ruby-doc.org/stdlib-2.0.0/libdoc/date/rdoc/Date.html#strftime-method) và [Ruby 2.1] (http: //www.ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#strftime-method). 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 lõi. – pbyrne

11

Đối với Ruby 1.9 Tôi đã phải sử dụng:

Time.now.strftime("%B") 
10

Nếu bạn c về miền địa phương, bạn nên làm điều này:

I18n.l(Time.now, format: "%B") 
+0

hoặc 'I18n.l (Date.current, format: '% B')' – Stefan

+0

hoặc 'I18n.l (Date.new, format: '% B')' để bắt đầu với tháng 1. Nếu bạn muốn thêm tháng, như tháng 2, hãy sử dụng 'Date.new + 1.month' –

Các vấn đề liên quan