A construção da data em moment
internamente usa o new Date()
no javascript. A new Date()
construção reconhece a sequência de datas nos formatos RFC2822 ou ISO em todos os navegadores. Ao construir um moment
objeto com data que não esteja nesses formatos, o aviso de reprovação é emitido.
Embora os avisos de descontinuação sejam lançados, para alguns formatos, o moment
objeto será construído com êxito no Chrome, mas não no Firefox ou Safari. Por esse motivo, o processamento da data no Chrome pode gerar resultados conforme o esperado (nem sempre) e gerar Invalid Date
outros.
Considere, 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
Então o moment.js
é usado por seu próprio risco, caso os formatos recomendados / padrão não sejam usados.
Para suprimir os avisos de descontinuação ,
- Como sugerido por Joe Wilson na resposta anterior, forneça o formato da data na
moment
construção.
Exemplo: moment("02.05.2018", "DD.MM.YYYY").format("DD MM YYYY");
- Forneça a data no formato ISO ou RFC2822.
Exemplo: moment("2018-02-01T18:30:00.000Z")
- Formato ISO
moment("Thu, 01 Feb 2018 18:30:00 GMT")
- Formato RFC2822 - Formato no Github
- Conforme sugerido por @niutech na resposta anterior, defina
moment.suppressDeprecationWarnings = true;
Sugiro substituir o fallback de entrada no momento.
moment.createFromInputFallback=function (config){
config._d = new Date(config._i);
}
Como (3) suprimirá todos os avisos, (4) suprimirá apenas o fallback da construção da data. Usando (4), você obterá Invalid Date
o uso interno new Date()
e outras obsoletas poderão ser vistas no console, para que o momento possa ser atualizado ou os métodos obsoletos possam ser substituídos no aplicativo.