Konstrukcja daty w moment
wewnętrznie używa new Date()
znaku w javascript. new Date()
Budowa rozpoznaje ciąg dat w obu dokument RFC2822 lub ISO formatów we wszystkich przeglądarkach. Podczas konstruowania plikumoment
obiektu z datą spoza tych formatów generowane jest ostrzeżenie o wycofaniu.
Chociaż generowane są ostrzeżenia o wycofaniu, w przypadku niektórych formatów moment
obiekt zostanie pomyślnie utworzony w przeglądarce Chrome, ale nie w przeglądarce Firefox lub Safari. Z tego powodu przetwarzanie daty w Chrome może dawać wyniki zgodnie z oczekiwaniami (nie zawsze) i rzucać Invalid Date
w inne.
Rozważ 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
Więc moment.js
jest używany na własne ryzyko w przypadku, gdy nie są używane zalecane / standardowe formaty.
Aby pominąć ostrzeżenia o wycofaniu ,
- Jak sugerował @Joe Wilson w poprzedniej odpowiedzi, podaj format daty na
moment
budowie.
Przykład: moment("02.05.2018", "DD.MM.YYYY").format("DD MM YYYY");
- Podaj datę w formacie ISO lub RFC2822.
Przykład: moment("2018-02-01T18:30:00.000Z")
- Format ISO
moment("Thu, 01 Feb 2018 18:30:00 GMT")
- Format RFC2822 - Formatuj w serwisie Github
- Zgodnie z sugestią @niutech w poprzedniej odpowiedzi ustaw
moment.suppressDeprecationWarnings = true;
Proponuję za chwilę nadpisać rezerwę wejścia.
moment.createFromInputFallback=function (config){
config._d = new Date(config._i);
}
Ponieważ (3) pominie wszystkie ostrzeżenia, (4) pominie tylko rezerwę konstrukcji daty. Używając (4), otrzymasz, Invalid Date
gdy new Date()
jest używany wewnętrzny, a inne przestarzałe funkcje można zobaczyć w konsoli, więc moment można zaktualizować lub zastąpić przestarzałe metody w aplikacji.