Việc xây dựng ngày trong moment
nội bộ sử dụng new Date()
trong javascript. Cấu new Date()
trúc nhận ra chuỗi ngày ở các định dạng RFC2822 hoặc ISO trong tất cả các trình duyệt. Khi xây dựng một moment
đối tượng có ngày không ở các định dạng này, cảnh báo không dùng nữa sẽ bị ném.
Mặc dù các cảnh báo không dùng nữa được đưa ra, nhưng đối với một số định dạng, moment
đối tượng sẽ được xây dựng thành công trong Chrome, nhưng không phải trong Firefox hoặc Safari. Do đó, việc xử lý ngày trong Chrome có thể cho kết quả như mong đợi (không phải tất cả thời gian) và ném Invalid Date
vào người khác.
Hãy xem xét 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
Vì vậy, moment.js
rủi ro được sử dụng là của riêng bạn trong trường hợp các định dạng được đề xuất / tiêu chuẩn không được sử dụng.
Để ngăn chặn các cảnh báo khấu hao ,
- Theo đề xuất của @Joe Wilson trong câu trả lời trước, hãy đưa ra định dạng ngày về
moment
xây dựng.
Thí dụ : moment("02.05.2018", "DD.MM.YYYY").format("DD MM YYYY");
- Đưa ra ngày ở định dạng ISO hoặc RFC2822.
Ví dụ: moment("2018-02-01T18:30:00.000Z")
- Định dạng ISO
moment("Thu, 01 Feb 2018 18:30:00 GMT")
- Định dạng RFC2822 - Định dạng trong Github
- Theo đề xuất của @niutech trong câu trả lời trước, hãy đặt
moment.suppressDeprecationWarnings = true;
Tôi đề nghị ghi đè dự phòng đầu vào trong thời điểm này.
moment.createFromInputFallback=function (config){
config._d = new Date(config._i);
}
Vì (3) sẽ triệt tiêu tất cả các cảnh báo, (4) sẽ chỉ triệt tiêu dự phòng ngày xây dựng. Sử dụng (4), bạn sẽ nhận được Invalid Date
nội bộ new Date()
được sử dụng và có thể thấy các khấu hao khác trong bảng điều khiển, do đó có thể nâng cấp khoảnh khắc hoặc các phương thức không dùng nữa trong ứng dụng.