Jak wyświetlić bieżący rok w widoku?

104

Czy jest funkcja, której mogę użyć do pokazania bieżącego roku w widoku? próbowałem

<%= Time.now  %>

spróbować pokazać czas, ale to nie działa dla mnie.

Zakoff
źródło

Odpowiedzi:

44

Myślę, że najlepszym sposobem na uzyskanie bieżącego roku, biorąc pod uwagę strefę czasową aplikacji, jest:

Date.current.year
freemanoid
źródło
1
Zgoda. Działa Date.currenttak samo, jak Time.zone.todayjeśli config.time_zonejest ustawione.
Brian,
To najlepsza odpowiedź. Date.current jest najbardziej odpowiedni.
Mario
17

Lubię używać:

Time.zone.now.year

Uwzględnia to aktualną strefę czasową (na wypadek, gdybyś nadpisał ją dla konkretnego użytkownika).

stebooks
źródło
6

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.currentalbo Time.zonemetody oparte są najlepszym.

Sprawdź ten wspaniały Railscast Ryana na temat stref czasowych

Darkfish
źródło