มีฟังก์ชันที่ฉันสามารถใช้เพื่อแสดงปีปัจจุบันในมุมมองได้หรือไม่? ฉันเหนื่อย
<%= Time.now %>
พยายามแสดงเวลา แต่ไม่ได้ผลสำหรับฉัน
มีฟังก์ชันที่ฉันสามารถใช้เพื่อแสดงปีปัจจุบันในมุมมองได้หรือไม่? ฉันเหนื่อย
<%= Time.now %>
พยายามแสดงเวลา แต่ไม่ได้ผลสำหรับฉัน
คำตอบ:
<%= Time.current.year %>
ฉันต้องการใช้คลาส Date เพื่อรับปีมากกว่าคลาสเวลา (หากคุณต้องการเพียงวันที่คุณไม่จำเป็นต้องพิจารณาชั่วโมงนาทีและวินาที)
<%= Date.today.year %>
cf http://ruby-doc.org/stdlib-2.1.0/libdoc/date/rdoc/Date.html#method-c-today
ฉันคิดว่าวิธีที่ดีที่สุดในการรับปีปัจจุบันโดยพิจารณาจากเขตเวลาการสมัครคือ:
Date.current.year
ฉันชอบใช้:
Time.zone.now.year
สิ่งนี้คำนึงถึงเขตเวลาปัจจุบัน (ในกรณีที่คุณได้ลบล้างเขตเวลาสำหรับผู้ใช้บางราย)
แม้ว่าจะได้รับคำตอบแล้ว แต่ฉันคิดว่ามันอาจมีประโยชน์สำหรับผู้ที่ต้องการดูผลลัพธ์มาตรฐานสำหรับโซลูชันที่แนะนำทั้งหมด
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 ในโซนเวลา
Date.current
เหมือนกับTime.zone.today
ว่าconfig.time_zone
ตั้งค่าไว้