javascript — «Предупреждение об устаревании: момент создания возвращается к js Date» при попытке конвертировать дату RFC2822 в moment.js

«Предупреждение об устаревании: момент создания возвращается к js Date» при попытке преобразовать дату RFC2822 в moment.js

Построение даты в moment внутренне использует new Date() в JavaScript. new Date() распознает строку даты в формате RFC2822 или ISO во всех браузерах. При создании объекта moment с датой не в этих форматах выдается предупреждение об устаревании.

Хотя предупреждения об устаревании выдаются, для некоторых форматов объект будет успешно создан в Chrome, но не в Firefox или Safari. Из-за этого обработка даты в Chrome может дать ожидаемые результаты (не всегда) и привести к Invalid Date в других.

Рассмотрим 02.02.2018 г.

Chrome — moment("02.02.2018")._d -{amp}gt; Fri Feb 02 2018 00:00:00 GMT 0530 (India Standard Time)

Firefox — moment("02.02.2018")._d -{amp}gt; Invalid Date

Safari — moment("02.02.2018")._d -{amp}gt; Invalid Date

Поэтому moment.js используется на ваш страх и риск в случае, если рекомендуемые / стандартные форматы не используются.

Чтобы подавить предупреждения об устаревании ,

  1. Как подсказал @Joe Wilson в предыдущем ответе, укажите формат даты на moment построения.

Пример: moment("02.05.2018", "DD.MM.YYYY").format("DD MM YYYY");

  1. Дайте дату в формате ISO или RFC2822.

Пример: moment("2018-02-01T18:30:00.000Z") — формат ISO

moment("Thu, 01 Feb 2018 18:30:00 GMT") — RFC2822 Формат — Форматировать в Github

  1. Как предложено @niutech в предыдущем ответе, установите

moment.suppressDeprecationWarnings = true;

  1. Я предлагаю перезаписать входной запасной момент в момент.

     moment.createFromInputFallback=function (config){ config._d = new Date(config._i); } 

Поскольку (3) будет подавлять все предупреждения, (4) будет подавлять только запасной вариант построения даты. Используя (4), вы получите Invalid Date поскольку используется внутренняя new Date() а в консоли можно увидеть другие устаревшие версии, поэтому момент можно обновить или заменить устаревшие методы в приложении.

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector