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