Respostas:
<%= Time.current.year %>
Prefiro usar a classe Date para obter o ano do que a classe Time (se você só precisa da Date, não precisa considerar horas, minutos e segundos).
<%= Date.today.year %>
cf http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today
Acho que a melhor maneira de obter o ano atual considerando o fuso horário do aplicativo é:
Date.current.year
Apesar de já ter sido respondido, achei que pode ser útil para quem deseja ver os resultados de benchmark para todas as soluções sugeridas.
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)
Agora, pode parecer exagero para algo tão simples como isso, no entanto, de uma perspectiva de otimização simples para um aplicativo de alto rendimento, considerarei o uso Date.today.year
Dito isso, se seu aplicativo é sensível ao fuso horário, talvez Date.current
ou Time.zone
métodos baseados sejam sua melhor aposta.
Confira este maravilhoso Railscast de Ryan sobre os fusos horários
Date.current
é o mesmo queTime.zone.today
seconfig.time_zone
estiver definido.