Antworten:
<%= Time.current.year %>
Ich würde lieber die Datumsklasse verwenden, um das Jahr als die Zeitklasse zu erhalten (wenn Sie nur das Datum benötigen, müssen Sie keine Stunden, Minuten und Sekunden berücksichtigen).
<%= Date.today.year %>
Siehe http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today
Ich denke, der beste Weg, um das aktuelle Jahr unter Berücksichtigung der Bewerbungszeitzone zu erhalten, ist:
Date.current.year
Obwohl es bereits beantwortet wurde, dachte ich, dass es für diejenigen nützlich sein könnte, die die Benchmark-Ergebnisse für alle vorgeschlagenen Lösungen betrachten möchten.
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)
Nun mag es für etwas so Einfaches vielleicht übertrieben erscheinen, aber aus einer einfachen Optimierungsperspektive für eine Anwendung mit hohem Durchsatz werde ich die Verwendung in Betracht ziehen Date.today.year
Wenn Ihre Anwendung zeitzonensensitiv ist, sind vielleicht Date.currentoder Time.zonebasierte Methoden die beste Wahl.
Schauen Sie sich diesen wunderbaren Railscast von Ryan in Time Zones an
Date.currentist das gleiche wieTime.zone.todaywennconfig.time_zoneeingestellt ist.