Descreva o bug
isValid não funciona corretamente
Reproduzir
Passos para reproduzir o comportamento:
moment('Chicago Illinois 46702').isValid(); // true
Comportamento esperado
deveria ser falso
É válido porque foi transformado em uma data válida:
new Date('Chicago Illinois 46702'); // Wed Jan 01 46702 00:00:00 GMT+0000 (Greenwich Mean Time)
No entanto ... você também deve ver um aviso a partir do momento:
moment('Chicago Illinois 46702').isValid();
Em seu console JavaScript:
Aviso de descontinuação: o valor fornecido não está em um formato RFC2822 ou ISO reconhecido. a construção do momento volta para js Date (), que não é confiável em todos os navegadores e versões. Formatos de data não RFC2822 / ISO são desencorajados e serão removidos em um próximo lançamento principal. Consulte http://momentjs.com/guides/#/warnings/js -date / para obter mais informações.
Que tal isso embora
moment('22-10-2020', 'dd-MM-yyyy', true).isValid();
retorna falso.
EDITAR
Eu vejo: momento ('22 -10-2020 ',' DD-MM-AAAA ', verdadeiro) .isValid (); trabalho
const allPossibleFormats = [
'D MMMM YYYY',
'D MMMM YYYY HH:mm',
'DD-MM-YY',
'DD-MM-YYYY',
'DD.MM.YYYY',
'DD.MM.YYYY HH:mm',
'DD/MM/YY',
'DD/MM/YYYY',
'DD/MM/YYYY HH:mm:ss',
'HH:mm:ss',
'M/D/YYYY',
'D/M/YYYY',
'MM-DD-YY',
'MM-DD-YYYY',
'MM-DD-YYYY HH:mm:ss',
'MM/DD/YY',
'MM/DD/YYYY',
'MM/DD/YYYY HH:mm:ss',
'MMM D YYYY',
'MMM D YYYY LT',
'MMMM Do YYYY',
'MMMM Do YYYY LT',
'YYYY-DD-MM HH:mm:ss',
'YYYY-MM',
'YYYY-MM-DD',
'YYYY-MM-DD HH:mm',
'YYYY-MM-DD HH:mm:ss',
'YYYY-MM-DD LT',
'YYYY-MM-DD h:mm:ss A',
'YYYY-MM-DDTHH:mm:ssZ',
'ddd, MMM D YYYY LT',
'dddd D MMMM YYYY HH:mm',
'dddd, MMMM Do YYYY LT'
];
moment('Chicago Illinois 46702', allPossibleFormats, true).isValid(); // false
moment('18/01/1944', allPossibleFormats, true).isValid(); // true
moment('22-10-2020', allPossibleFormats, true).isValid(); // true
moment('1944-01-18 12:00:00', allPossibleFormats, true).isValid(); // true
moment('2001-01-01 00:00:00', allPossibleFormats, true).isValid(); // true
moment('2001-01', allPossibleFormats, true).isValid(); // true
Também podemos estender allPossibleFormats
array e adicionar outros formatos de data / data e hora
Por favor, reabra se você ainda tiver problemas.
Comentários muito úteis
Também podemos estender
allPossibleFormats
array e adicionar outros formatos de data / data e hora