Как показать текущий год в поле зрения?

104

Есть ли функция, которую я могу использовать для отображения текущего года в представлении? я пытался

<%= Time.now  %>

чтобы попытаться показать время, но у меня это не работает.

Закофф
источник

Ответы:

44

Я думаю, что лучший способ получить текущий год с учетом часового пояса приложения :

Date.current.year
фриманоид
источник
1
Согласовано. Кроме того, Date.currentон такой же, как Time.zone.todayесли бы config.time_zoneустановлен.
Брайан
Это лучший ответ. Date.current является наиболее подходящим.
Марио
17

Мне нравится использовать:

Time.zone.now.year

При этом учитывается текущий часовой пояс (если вы переопределили его для определенного пользователя).

стейки
источник
6

Несмотря на то, что на него уже был дан ответ, я подумал, что это может пригодиться тем, кто хочет посмотреть результаты тестов для всех предлагаемых решений.

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)

Возможно, это может показаться чрезмерным для чего-то столь же простого, однако, с точки зрения простой оптимизации для приложения с высокой пропускной способностью, я рассмотрю возможность использования Date.today.year

Сказано так, если ваше приложение чувствительно к часовому поясу, возможно, Date.currentили Time.zoneоснованные на нем методы - лучший выбор.

Посмотрите этот замечательный Railscast от Райана на Time Zones

Темная рыба
источник