2011-05-30 20 views

Respuesta

13

me gusta usar:

Time.zone.now.year 

Esto tiene en cuenta la zona horaria actual (en caso de haber anulado por un usuario en particular).

34

Creo que la mejor manera de conseguir el año en curso teniendo en cuenta la aplicación zona horaria es:

Date.current.year 
+1

De acuerdo. Además, 'Date.current' es lo mismo que' Time.zone.today' si 'config.time_zone' está configurado. – Sooie

+0

Esta es la mejor respuesta. Date.actual es el más apropiado. – Mario

0

A pesar de que ya ha sido contestada, pensé que podría venir a mano para aquellos que quieren mirar 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 puede parecer exagerado para algo tan simple como eso, sin embargo, desde una simple perspectiva de optimización para una aplicación de alto rendimiento, voy a considerar el uso de Date.today.year

lo dijo, si su la aplicación es sensible a la zona horaria, quizás Date.current o Time.zone métodos basados ​​son su mejor opción.

Mira esta maravillosa Railscast by Ryan on Time Zones

Cuestiones relacionadas