Rails DateTime.now โดยไม่มีเวลา


92

ฉันจำเป็นต้องใช้ DateTime.now เพื่อรับวันที่ปัจจุบันและ "ปิด" เวลา

ตัวอย่างเช่นสิ่งนี้แสดงสิ่งที่ฉันไม่ต้องการ:DateTime.now => Sat, 19 Nov 2011 18:54:13 UTC +00:00

สิ่งนี้แสดงให้เห็นว่าฉันต้องการอะไร :DateTime.now.some_operation => 2011-11-06 00:00:00 UTC


11
DateTime without Time is Date :) คุณหมายถึง Date.today หรือไม่?
ajahongir

คำตอบ:


177

คุณสามารถใช้สิ่งใดสิ่งหนึ่งต่อไปนี้:

  • DateTime.current.midnight
  • DateTime.current.beginning_of_day
  • DateTime.current.to_date

@sekmo start_of_day เป็นส่วนหนึ่งของ activesupport (ราง)
Igor Kapkov

5
ดีกว่าที่จะไม่ใช้DateTime.nowโดยไม่มีโซน มันเป็นเรื่องดีที่จะใช้อย่างใดอย่างหนึ่งTime.zone.now, DateTime.current, DateTime.now.in_time_zone, DateTime.now.utc, DateTime.now.getlocal, DateTime.now.iso8601, DateTime.now.jisx0301, DateTime.now.rfc3339, DateTime.now.to_i, DateTime.now.to_fแทน
Bryan Dimas

ขอบคุณ @BryanDimas ความคิดเห็นของคุณช่วยได้ VPN สามารถส่งผลกระทบหรือไม่หากเปลี่ยน IP ไปยังประเทศอื่น ๆ
Jenuel Ganawed

21

สิ่งที่คุณต้องการคือฟังก์ชัน strftime:

Time.now.strftime("%Y-%d-%m %H:%M:%S %Z")

สิ่งนี้อาจทำให้เกิดปัญหาที่สำคัญหากคุณกำลังแทรกข้อมูลลงในฐานข้อมูลที่คาดว่าจะมีการ%Y-%m-%d %H:%M:%Sจัดรูปแบบข้อมูลเนื่องจากจะกลับค่าของเดือนและวัน
quetzaluz

ข้อเสนอของฉันคือการใช้ฟังก์ชัน strftime ซึ่งเป็นรูปแบบที่ใช้ซึ่งคุณต้องปรับแต่งเองตามนั้น
รองประธาน


4

หากคุณพอใจrequire 'active_support/core_ext'คุณสามารถใช้

DateTime.now.midnight # => Sat, 19 Nov 2011 00:00:00 -0800

1
เพิ่งสังเกตเห็นแท็กทับทิมบนรางดังนั้นฉันคิดว่าคุณมีความสุขที่ต้องใช้ ActiveSupport :)
Jon M



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