Despite that it has already been answered, I thought it might come handy for those who want to look at benchmark results for all the suggested solutions.
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)
Now, it may perhaps seem over the top for something as simple as that, however, from a simple optimisation perspective for a high throughput application, I will consider using Date.today.year
Said so, if your application is Time Zone sensitive, perhaps Date.current or Time.zone based methods are your best bet.