Come visualizzare l'anno in corso in vista?


104

C'è una funzione che posso usare per mostrare l'anno in corso in una vista? Ho provato

<%= Time.now  %>

per provare a mostrare l'ora, ma questo non funziona per me.

Risposte:




44

Penso che il modo migliore per ottenere l'anno in corso considerando il fuso orario dell'applicazione sia:

Date.current.year

1
Concordato. Inoltre, Date.currentè lo stesso di Time.zone.todayse config.time_zonefosse impostato.
Brian

Questa è la migliore risposta. Date.current è il più appropriato.
Mario

17

Mi piace usare:

Time.zone.now.year

Questo tiene conto del fuso orario corrente (nel caso in cui lo si sia sovrascritto per un particolare utente).


6

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.currentoi Time.zonemetodi basati sono la soluzione migliore.

Dai un'occhiata a questo meraviglioso Railscast di Ryan su Time Zones

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.