วิธีเพิ่ม 10 วันในเวลาปัจจุบันใน Rails


106

ฉันพยายามทำสิ่งที่ชอบ

Time.now + 5.days

แต่ก็ไม่ได้ผลแม้ว่าฉันจะจำได้ไม่ชัดว่าเห็นและประทับใจมากที่สามารถทำบางสิ่งบางอย่างเช่น2.yearsฯลฯ

ฉันจะทำสิ่งนั้นใน Rails 3 ได้อย่างไร


ที่ควรจะทำงาน คุณได้รับข้อผิดพลาดอะไร
แคม

มันใช้งานได้ใช่ เมื่อคุณอยู่ในราง Time.zone.now ฟังดูเหมาะสมกว่า
Ben

คำตอบ:


284

ใช้

Time.now + 10.days

หรือแม้กระทั่ง

10.days.from_now

ทั้งสองได้ผลแน่นอน แน่ใจหรือว่าคุณอยู่ใน Rails ไม่ใช่แค่ Ruby?

หากคุณอยู่ใน Rails คุณกำลังพยายามเรียกใช้สิ่งนี้จากที่ไหน? โปรดทราบว่าต้องโหลด Active Support


@yuval มันใช้งานได้บนรางไม่ใช่ทับทิม.. คิดว่ามี แต่เพื่อช่วยคนอื่น
Catmandu

1
แค่นี้ก็สุดยอดแล้ว ฉันรักทับทิมและราง
wpp

5
มีความแตกต่างที่ลึกซึ้ง Time.now + 10.daysเลือกเขตเวลาระบบของคุณเสมอในขณะที่10.days.from_nowจะรับเขตเวลา UTC หากไม่มีการตั้งค่าใดในการกำหนดค่าราง
Babistalikesflyingonrails

โดยทั่วไปควรใช้Time.zone.nowแทนTime.nowไฟล์.
x-yuri

21

days, yearsฯลฯ เป็นส่วนหนึ่งของการใช้งานการสนับสนุนดังนั้นนี้จะไม่ทำงานในแต่มันควรจะทำงานในirbrails console


ใช่ - จุดบน ไม่สามารถทำได้ในทับทิมวานิลลา
Yuval Karmi

1
ทำงานใน irb เช่นกัน หากคุณติดตั้งอัญมณีให้ทำrequire 'active_support/time'ที่จุดเริ่มต้นของเซสชันหรือก่อนที่คุณจะใช้คำสั่ง
darkdefender27

10

ใช้งานได้แน่นอนและฉันใช้ทุกที่ที่ฉันต้องการเพิ่มวันในวันที่ปัจจุบัน:

Date.today() + 5

10

ตัวเลือกอื่น ๆ เพียงเพื่อการอ้างอิง

-10.days.ago
# Available in Rails 4
DateTime.now.days_ago(-10)

เพียงแค่ระบุตัวเลือกทั้งหมดที่ฉันรู้:

[1] Time.now + 10.days
[2] 10.days.from_now
[3] -10.days.ago
[4] DateTime.now.days_ago(-10)
[5] Date.today + 10

ตอนนี้อะไรคือความแตกต่างระหว่างพวกเขาหากเราสนใจเรื่องเขตเวลา:

  • [1, 4] ด้วยเขตเวลาของระบบ
  • [2, 3] ด้วยกำหนดเขตเวลาของแอป Rails ของคุณ
  • [5] วันที่เท่านั้นไม่รวมเวลาในผลลัพธ์


2

ลองใช้กับ Ruby จะส่งคืนวันที่ / เวลาใหม่ตามจำนวนวันที่ระบุในอนาคต

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