Câu trả lời:
<%= Time.current.year %>
Tôi muốn sử dụng lớp Ngày để lấy năm hơn lớp Thời gian (nếu bạn chỉ cần Ngày, bạn không cần xem xét giờ, phút và giây).
<%= Date.today.year %>
cf http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today
Tôi nghĩ cách tốt nhất để lấy năm hiện tại xem xét múi giờ ứng dụng là:
Date.current.year
Mặc dù nó đã được trả lời, tôi nghĩ rằng nó có thể hữu ích cho những người muốn xem kết quả điểm chuẩn cho tất cả các giải pháp được đề xuất.
require 'benchmark'
n = 500000
Benchmark.bm do |x|
x.report { n.times do ; Date.today.year; end }
x.report { n.times do ; Date.current.year; end }
x.report { n.times do ; Time.current.year; end }
x.report { n.times do ; Time.zone.now.year; end }
end
user system total real
0.680000 0.030000 0.710000 ( 0.709078)
2.730000 0.010000 2.740000 ( 2.735085)
3.340000 0.010000 3.350000 ( 3.363586)
3.070000 0.000000 3.070000 ( 3.082388)
Bây giờ, nó có thể có vẻ vượt trội đối với một cái gì đó đơn giản như vậy, tuy nhiên, từ góc độ tối ưu hóa đơn giản cho một ứng dụng thông lượng cao, tôi sẽ xem xét sử dụng Date.today.year
Như vậy, nếu ứng dụng của bạn nhạy cảm với Múi giờ, có lẽ Date.current
hoặc Time.zone
các phương pháp dựa trên là lựa chọn tốt nhất cho bạn.
Hãy xem Railscast tuyệt vời này của Ryan trên Time Zones
Date.current
giống nhưTime.zone.today
ifconfig.time_zone
được thiết lập.