Comment afficher l'année en cours en vue?

104

Y a-t-il une fonction que je peux utiliser pour afficher l'année en cours dans une vue? j'ai essayé

<%= Time.now  %>

essayer de montrer l'heure mais cela ne fonctionne pas pour moi.

Zakoff
la source

Réponses:

44

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
freemanoid
la source
1
D'accord. En outre, Date.currentest le même que Time.zone.todaysi config.time_zoneest défini.
Brian
C'est la meilleure réponse. Date.current est la plus appropriée.
Mario
17

J'aime utiliser:

Time.zone.now.year

Cela prend en compte le fuseau horaire actuel (au cas où vous l'auriez remplacé pour un utilisateur particulier).

stebooks
la source
6

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.currentou Time.zonesont votre meilleur pari.

Découvrez ce merveilleux Railscast de Ryan sur les fuseaux horaires

Poisson noir
la source