การสร้างวันที่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()ใช้งานภายในและสามารถเห็นค่าเสื่อมราคาอื่น ๆ ในคอนโซลดังนั้นจึงสามารถอัปเกรดช่วงเวลาได้