如何显示当前年份?

Zak*_*off 101 ruby-on-rails-3

我可以用一种功能在视图中显示当前年份吗?我试过了

<%= Time.now  %>
Run Code Online (Sandbox Code Playgroud)

尝试显示时间,但这对我不起作用.

Nao*_*awa 46

我宁愿使用Date类来获得年份而不是Time类(如果你只需要Date,你不需要考虑小时,分钟和秒).

<%= Date.today.year %>
Run Code Online (Sandbox Code Playgroud)

cf http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today


fre*_*oid 43

我认为考虑应用时区的当前年份的最佳方法是:

Date.current.year
Run Code Online (Sandbox Code Playgroud)


ste*_*oks 15

我喜欢用:

Time.zone.now.year
Run Code Online (Sandbox Code Playgroud)

这会考虑当前时区(包括您为特定用户覆盖它).


Dar*_*ish 5

尽管它已经得到了回答,但我认为对于那些想要查看所有建议解决方案的基准测试结果的人来说,它可能会派上用场.

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)
Run Code Online (Sandbox Code Playgroud)

现在,对于像这样简单的事情来说,它可能看起来过于顶端,但是,从高吞吐量应用程序的简单优化角度来看,我会考虑使用 Date.today.year

如此说来,如果您的应用程序是时区敏感的,也许Date.currentTime.zone基于方法是您最好的选择.

看看Ryan on Time Zones的精彩Railscast