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


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

<%= Time.now  %>

Para tratar de mostrar el tiempo, pero esto no funciona para mí.

Author: Zakoff, 2011-05-30

5 answers

 225
Author: Emil Ahlbäck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-01 05:18:25

Prefiero usar la clase de fecha para obtener el año que la clase de Hora (si solo necesita la Fecha, no necesita considerar horas, minutos y segundos).

<%= Date.today.year %>

C. f. http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today

 39
Author: Naoyoshi Aikawa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-31 15:07:24

Creo que la mejor manera de obtener el año en curso considerando la zona horaria de la solicitud es:

Date.current.year
 37
Author: freemanoid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-13 20:01:44

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

 13
Author: stebooks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-02 17:55:48

A pesar de que ya se ha respondido, pensé que podría ser útil para aquellos que quieren 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, quizás 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.current o Time.zone métodos basados son su mejor apuesta.

Comprobar fuera de este maravilloso Railscast por Ryan en Zonas Horarias

 1
Author: Darkfish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-15 06:32:20