Odpowiedzi:
<%= Time.current.year %>
Wolałbym raczej użyć klasy Date, aby uzyskać rok niż klasę Time (jeśli potrzebujesz tylko daty, nie musisz brać pod uwagę godzin, minut i sekund).
<%= Date.today.year %>
cf http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today
Myślę, że najlepszym sposobem na uzyskanie bieżącego roku, biorąc pod uwagę strefę czasową aplikacji, jest:
Date.current.year
Pomimo tego, że już udzielono odpowiedzi, pomyślałem, że może się przydać tym, którzy chcą spojrzeć na wyniki benchmarków dla wszystkich sugerowanych rozwiązań.
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)
Teraz może się wydawać, że coś tak prostego może wydawać się przesadzone, jednak z prostej perspektywy optymalizacji dla aplikacji o dużej przepustowości rozważę użycie Date.today.year
Tak powiedział, jeśli aplikacja jest strefa czasowa wrażliwy, może Date.current
albo Time.zone
metody oparte są najlepszym.
Sprawdź ten wspaniały Railscast Ryana na temat stref czasowych
Date.current
tak samo, jakTime.zone.today
jeśliconfig.time_zone
jest ustawione.