Moment: isValid ne fonctionne pas correctement

Créé le 28 oct. 2019  ·  4Commentaires  ·  Source: moment/moment

Décrivez le bogue
isValid ne fonctionne pas correctement

Reproduire
Étapes pour reproduire le comportement :
moment('Chicago Illinois 46702').isValid(); // true

Comportement prévisible
devrait être faux

Commentaire le plus utile

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

Nous pouvons également étendre le tableau allPossibleFormats et ajouter d'autres formats date/datetime

Tous les 4 commentaires

Il est valide car il a été transformé en une date valide :

new Date('Chicago Illinois 46702'); // Wed Jan 01 46702 00:00:00 GMT+0000 (Greenwich Mean Time)

Cependant... vous devriez également voir un avertissement à partir du moment :

moment('Chicago Illinois 46702').isValid(); 

Dans votre console JavaScript :

Avertissement de dépréciation : la valeur fournie n'est pas dans un format RFC2822 ou ISO reconnu. moment la construction revient à js Date(), qui n'est pas fiable sur tous les navigateurs et versions. Les formats de date non RFC2822/ISO sont déconseillés et seront supprimés dans une prochaine version majeure. Veuillez vous référer à http://momentjs.com/guides/#/warnings/js -date/ pour plus d'informations.

Que diriez-vous de ceci cependant

moment('22-10-2020', 'dd-MM-yyyy', true).isValid();

renvoie faux.

ÉDITER
Je vois : moment('22-10-2020', 'DD-MM-YYYY', true).isValid(); travaux

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

Nous pouvons également étendre le tableau allPossibleFormats et ajouter d'autres formats date/datetime

Veuillez rouvrir si vous rencontrez toujours des problèmes.

Cette page vous a été utile?
0 / 5 - 0 notes