Есть ли функция, которую я могу использовать для отображения текущего года в представлении? Я пробовал
<%= Time.now %>
чтобы попытаться показать время, но это не работает для меня.
Есть ли функция, которую я могу использовать для отображения текущего года в представлении? Я пробовал
<%= Time.now %>
чтобы попытаться показать время, но это не работает для меня.
<%= Time.current.year %>
Я предпочел бы использовать класс Date для получения года, чем Time (если вам нужна только дата, вам не нужно учитывать часы, минуты и секунды).
<%= Date.today.year %>
c.f. http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today
Я думаю, что лучший способ получить текущий год , учитывая часовой пояс приложения:
Date.current.year
Мне нравится использовать:
Time.zone.now.year
Это учитывает текущий часовой пояс (если вы его переопределили для определенного пользователя).
Несмотря на то, что на это уже был дан ответ, я подумал, что это может пригодиться тем, кто хочет посмотреть результаты тестов для всех предлагаемых решений.
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 от Райана по часовым поясам