Побудова дати momentвнутрішньо використовує new Date()в JavaScript. 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
Сафарі - 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 Format - Формат у Github
- Як запропонував @niutech у попередній відповіді, встановіть
moment.suppressDeprecationWarnings = true;
Я пропоную перезаписати вхідний запас.
moment.createFromInputFallback=function (config){
config._d = new Date(config._i);
}
Оскільки (3) придушить усі попередження, (4) придушить лише резервну дату побудови конструкції. Використовуючи (4), ви отримаєте, Invalid Dateяк використовується внутрішня система new Date(), а інші константації можна побачити в консолі, тому момент можна модернізувати або замінити застарілі методи в додатку.