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.

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

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).


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.