現在の年を表示する方法は?


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をチェックしてください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.