วิธีแสดงปีปัจจุบันในมุมมอง?


105

มีฟังก์ชันที่ฉันสามารถใช้เพื่อแสดงปีปัจจุบันในมุมมองได้หรือไม่? ฉันเหนื่อย

<%= Time.now  %>

พยายามแสดงเวลา แต่ไม่ได้ผลสำหรับฉัน

คำตอบ:



49

ฉันต้องการใช้คลาส Date เพื่อรับปีมากกว่าคลาสเวลา (หากคุณต้องการเพียงวันที่คุณไม่จำเป็นต้องพิจารณาชั่วโมงนาทีและวินาที)

<%= Date.today.year %>

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


45

ฉันคิดว่าวิธีที่ดีที่สุดในการรับปีปัจจุบันโดยพิจารณาจากเขตเวลาการสมัครคือ:

Date.current.year

1
เห็นด้วย นอกจากนี้ยังDate.currentเหมือนกับTime.zone.todayว่าconfig.time_zoneตั้งค่าไว้
Brian

นี่คือคำตอบที่ดีที่สุด Date.current เหมาะสมที่สุด
Mario

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 ที่ยอดเยี่ยมนี้โดย Ryan ในโซนเวลา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.