Побудова дати 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()
, а інші константації можна побачити в консолі, тому момент можна модернізувати або замінити застарілі методи в додатку.