Risposte:
<%= Time.current.year %>
Preferisco usare la classe Date per ottenere l'anno piuttosto che la classe Time (se hai solo bisogno della data, non devi considerare ore, minuti e secondi).
<%= Date.today.year %>
cf http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today
Penso che il modo migliore per ottenere l'anno in corso considerando il fuso orario dell'applicazione sia:
Date.current.year
Nonostante abbia già avuto risposta, ho pensato che potesse tornare utile per chi vuole guardare i risultati di benchmark per tutte le soluzioni suggerite.
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)
Ora, può forse sembrare esagerato per qualcosa di così semplice, tuttavia, da una semplice prospettiva di ottimizzazione per un'applicazione ad alto rendimento, prenderò in considerazione l'utilizzo Date.today.year
Detto questo, se la tua applicazione è sensibile al fuso orario, forse Date.current
oi Time.zone
metodi basati sono la soluzione migliore.
Dai un'occhiata a questo meraviglioso Railscast di Ryan su Time Zones
Date.current
è lo stesso diTime.zone.today
seconfig.time_zone
fosse impostato.