Конструкция даты в 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
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()
, а в консоли можно увидеть другие устаревшие методы, поэтому можно обновить момент или заменить устаревшие методы в приложении.
person
Vignesh Raja
schedule
17.07.2018