Réponses:
<%= Time.current.year %>
Je préfère utiliser la classe Date pour obtenir l'année plutôt que la classe Time (si vous n'avez besoin que de la date, vous n'avez pas besoin de prendre en compte les heures, les minutes et les secondes).
<%= Date.today.year %>
cf http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today
Je pense que la meilleure façon d'obtenir l'année en cours compte tenu du fuseau horaire de l'application est:
Date.current.year
Malgré cela, il a déjà été répondu, j'ai pensé que cela pourrait être utile pour ceux qui veulent regarder les résultats de référence pour toutes les solutions suggérées.
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)
Maintenant, cela peut sembler exagéré pour quelque chose d'aussi simple que cela, cependant, d'un simple point de vue d'optimisation pour une application à haut débit, j'envisagerai d'utiliser Date.today.year
Dit ainsi, si votre application est sensible au fuseau horaire, peut-être des méthodes basées sur Date.current
ou Time.zone
sont votre meilleur pari.
Découvrez ce merveilleux Railscast de Ryan sur les fuseaux horaires
Date.current
est le même queTime.zone.today
siconfig.time_zone
est défini.