การสร้างวันที่moment
ภายในใช้new Date()
ในจาวาสคริปต์ การnew Date()
ก่อสร้างรับรู้สตริงวันที่ในรูปแบบRFC2822หรือISOในเบราว์เซอร์ทั้งหมด เมื่อสร้างmoment
วัตถุที่มีวันที่ไม่ได้อยู่ในรูปแบบเหล่านี้คำเตือนการคัดค้านจะถูกส่งออกไป
แม้ว่าจะมีการโยนคำเตือนเรื่องการคัดค้าน แต่สำหรับบางรูปแบบmoment
วัตถุจะสร้างสำเร็จใน Chrome แต่ไม่ใช่ใน Firefox หรือ Safari ด้วยเหตุนี้การประมวลผลวันที่ใน Chrome จึงอาจให้ผลลัพธ์ตามที่คาดหวัง (ไม่ใช่ทุกเวลา) และส่งไปให้Invalid Date
ผู้อื่น
พิจารณา02.02.2018
,
Chrome - moment("02.02.2018")._d
->Fri Feb 02 2018 00:00:00 GMT+0530 (India Standard Time)
Firefox - moment("02.02.2018")._d
->Invalid Date
Safari - moment("02.02.2018")._d
->Invalid Date
ดังนั้นmoment.js
คุณต้องยอมรับความเสี่ยงเองในกรณีที่ไม่ได้ใช้รูปแบบที่แนะนำ / มาตรฐาน
ในการระงับคำเตือนที่ไม่เห็นด้วย
- ตามคำแนะนำของ @Joe Wilson ในคำตอบก่อนหน้านี้โปรดระบุรูปแบบวันที่ในการ
moment
สร้าง
ตัวอย่าง: moment("02.05.2018", "DD.MM.YYYY").format("DD MM YYYY");
- ระบุวันที่ในรูปแบบ ISO หรือ RFC2822
ตัวอย่าง: moment("2018-02-01T18:30:00.000Z")
- รูปแบบ ISO
moment("Thu, 01 Feb 2018 18:30:00 GMT")
- รูปแบบ RFC2822 - รูปแบบใน Github
- ตามคำแนะนำของ @niutech ในคำตอบก่อนหน้าให้ตั้งค่า
moment.suppressDeprecationWarnings = true;
ฉันแนะนำให้เขียนทับทางเลือกอินพุตในทันที
moment.createFromInputFallback=function (config){
config._d = new Date(config._i);
}
เนื่องจาก (3) จะระงับคำเตือนทั้งหมด (4) จะระงับเฉพาะวันที่การก่อสร้างสำรอง เมื่อใช้ (4) คุณจะได้รับInvalid Date
เมื่อมีการnew Date()
ใช้งานภายในและสามารถเห็นค่าเสื่อมราคาอื่น ๆ ในคอนโซลดังนั้นจึงสามารถอัปเกรดช่วงเวลาได้