Yanıtlar:
<%= Time.current.year %>
Yıl almak için Time sınıfından ziyade Date sınıfını kullanmayı tercih ederim (yalnızca Date'e ihtiyacınız varsa, saatleri, dakikaları ve saniyeleri dikkate almanız gerekmez).
<%= Date.today.year %>
cf http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today
Bence uygulama saat dilimini dikkate alarak cari yılı almanın en iyi yolu :
Date.current.year
Kullanmayı seviyorum:
Time.zone.now.year
Bu, mevcut saat dilimini dikkate alır (belirli bir kullanıcı için onu geçersiz kıldıysanız).
Zaten yanıtlanmış olmasına rağmen, önerilen tüm çözümler için kıyaslama sonuçlarına bakmak isteyenler için kullanışlı olabileceğini düşündüm.
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)
Şimdi, belki de bu kadar basit bir şey için üst sıralarda görünebilir, ancak, yüksek verimli bir uygulama için basit bir optimizasyon perspektifinden, kullanmayı düşüneceğim Date.today.year
Öyle söylendi, eğer başvurunuz Saat Dilimine duyarlıysa, belki Date.current
veya Time.zone
temel yöntemler en iyi seçeneğinizdir.
Time Zones'da Ryan tarafından hazırlanan bu harika Railscast'e göz atın
Date.current
aynıTime.zone.today
eğerconfig.time_zone
ayarlanır.