如何显示当前年份?

是否有一个函数可以用来在视图中显示当前年份

<%= Time.now  %>

试图显示时间,但这对我不起作用。

56958 次浏览

I like to use:

Time.zone.now.year

This takes into account the current timezone (incase you have overridden it for a particular user).

I'd rather use Date class to get year than Time class (if you only need the Date, you don't need to consider hours, minutes and seconds).

<%= Date.today.year %>

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

I think the best way to get the current year considering application timezone is:

Date.current.year

Despite that it has already been answered, I thought it might come handy for those who want to look at benchmark results for all the suggested solutions.

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)

Now, it may perhaps seem over the top for something as simple as that, however, from a simple optimisation perspective for a high throughput application, I will consider using Date.today.year

Said so, if your application is Time Zone sensitive, perhaps Date.current or Time.zone based methods are your best bet.

Check out this wonderful Railscast by Ryan on Time Zones