¿Cómo mostrar el año actual a la vista?

104

¿Hay alguna función que pueda usar para mostrar el año actual en una vista? Yo he tratado

<%= Time.now  %>

para intentar mostrar la hora, pero esto no me funciona.

Zakoff
fuente

Respuestas:

44

Creo que la mejor manera de obtener el año actual considerando la zona horaria de la aplicación es:

Date.current.year
freemanoid
fuente
1
Convenido. Además, Date.currentes lo mismo que Time.zone.todaysi config.time_zoneestá configurado.
Brian
Esta es la mejor respuesta. Date.current es el más apropiado.
Mario
17

Me gusta usar:

Time.zone.now.year

Esto tiene en cuenta la zona horaria actual (en caso de que la haya anulado para un usuario en particular).

stebooks
fuente
6

A pesar de que ya se ha respondido, pensé que podría ser útil para aquellos que quieran ver los resultados de referencia para todas las soluciones sugeridas.

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)

Ahora, tal vez pueda parecer exagerado para algo tan simple como eso, sin embargo, desde una perspectiva de optimización simple para una aplicación de alto rendimiento, consideraré usar Date.today.year

Dicho esto, si su aplicación es sensible a la zona horaria, tal vez Date.currento los Time.zonemétodos basados ​​sean su mejor opción.

Mira este maravilloso Railscast de Ryan en Time Zones

Pez oscuro
fuente