回答:
<%= Time.current.year %>
Dateクラスを使用してTimeクラスより年を取得したい(Dateのみが必要な場合は、時間、分、秒を考慮する必要はありません)。
<%= Date.today.year %>
cf http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today
既に回答済みですが、提案されたすべてのソリューションのベンチマーク結果を確認したい人には便利かもしれないと思いました。
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をチェックしてください
Date.current
が設定されているTime.zone.today
場合config.time_zone
と同じです。