javascript - ดึงวันที่ปัจจุบันโดยใช้ date-fns ในรูปแบบ ISO-8601
ฉันต้องการได้รูปแบบ ISO-8601 ของชั่วโมง:นาที:วินาทีล่าสุดจากวันปัจจุบันโดยใช้ไลบรารี date-fns:
ฉันกำลังใช้: endOfDay(new Date());
Fri Sep 14 2018 23:59:59 GMT-0300ดังนั้นเพิ่ม toISOString() เพื่อให้ได้รูปแบบ ISO: endOfDay(new Date()).toISOString()
ผลลัพธ์: 2018-09-15T02:59:59.999Z
เมื่อฉันต้องการ:
2018-09-14T23:59:59.999Zคำตอบ #1
2018-09-14T23:59:59.999Z ไม่ใช่เวลาสิ้นสุดของวันที่คำนวณโดย endOfDay(new Date()); มันเร็วกว่านั้น 3 ชั่วโมง ตัวอักษร "Z" หมายถึงเวลา UTC และโซนเวลาท้องถิ่นของคุณมีออฟเซ็ตจาก UTC -0300.
โดยการเรียกใช้ endOfDay คุณจะได้รับค่าของวันที่ ซึ่งคุณสามารถใช้ในการเปรียบเทียบและการคำนวณอื่น ๆ กับค่าของวันที่อื่น ๆ ได้ มันเป็นวันที่ที่สมบูรณ์พร้อมเวลาตามเขตเวลาท้องถิ่น
คุณต้องการเก็บหมายเลขวันเดียวกันในสตริงที่จัดรูปแบบหรือไม่? คุณสามารถจัดรูปแบบวันที่เป็นสตริง ISO 8601 ในเขตเวลาท้องถิ่นของคุณได้:
format(endOfDay(new Date()), 'yyyy-MM-dd\'T\'HH:mm:ssXX')
// Prints "2018-09-14T23:59:59.999-0300" in Brazil (BRT)
formatISO(endOfDay(new Date()))
// Prints "2018-09-14T23:59:59.999-03:00" in Brazil (BRT)
คุณต้องการที่จะได้วันสิ้นสุดของวันนี้ด้วยหมายเลขเดียวกับวันนี้ใน UTC หรือไม่? ถ้าคุณไม่สนใจวันสิ้นสุดจริง ๆ ของคุณเมื่อเทียบกับวันที่อื่น ๆ คุณสามารถรวม "วินาทีสุดท้ายของวัน" กับ "Z" เข้าด้วยกันได้เลย:
format(new Date(), 'yyyy-MM-dd') + 'T23:59:59.999Z'
// Prints "2018-09-14T23:59:59.999Z" anywhere on Earth
หมายเหตุ: หากคุณใช้ date-fns 1.x ให้ใช้รูปแบบ yyyy-MM-DD[T]HH:mm:ssZZ และ yyyy-MM-DD ในรูปแบบที่ระบุด้านบน ไวยากรณ์ได้เปลี่ยนไปในรุ่น 2.x ดูรูปแบบที่รองรับด้วย ซึ่งคุณสามารถสลับไปใช้กับเวอร์ชันของ date-fns ของคุณได้
คำตอบ #2
format(endOfDay(new Date()), "yyyy-MM-dd'T'HH:mm:ss'Z'")
วิธีนี้ได้ผลสำหรับฉัน
