Ответы:
<%= Time.current.year %>
Я бы предпочел использовать класс Date, чтобы получить год, чем класс времени (если вам нужна только Date, вам не нужно учитывать часы, минуты и секунды).
<%= Date.today.year %>
cf http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today
Несмотря на то, что на него уже был дан ответ, я подумал, что это может пригодиться тем, кто хочет посмотреть результаты тестов для всех предлагаемых решений.
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)
Возможно, это может показаться чрезмерным для чего-то столь же простого, однако, с точки зрения простой оптимизации для приложения с высокой пропускной способностью, я рассмотрю возможность использования Date.today.year
Сказано так, если ваше приложение чувствительно к часовому поясу, возможно, Date.current
или Time.zone
основанные на нем методы - лучший выбор.
Посмотрите этот замечательный Railscast от Райана на Time Zones
Date.current
он такой же, какTime.zone.today
если быconfig.time_zone
установлен.