Je voudrais faire la différence entre les objets de date valides et invalides dans JS, mais je n'ai pas pu comprendre comment:
var d = new Date("foo");
console.log(d.toString()); // shows 'Invalid Date'
console.log(typeof d); // shows 'object'
console.log(d instanceof Date); // shows 'true'
Des idées pour écrire une isValidDatefonction?
- Ash est recommandé
Date.parsepour l'analyse des chaînes de date, ce qui permet de vérifier si la chaîne de date est valide. - Ce que je préférerais, si possible, c'est que mon API accepte une instance de Date et puisse vérifier / affirmer si elle est valide ou non. La solution de Borgar le fait, mais je dois la tester sur tous les navigateurs. Je me demande également s'il existe une manière plus élégante.
- Ash m'a fait envisager de ne pas avoir du tout d'acceptation d'
Dateinstances par mon API , ce serait plus facile à valider. - Borgar a suggéré de tester une
Dateinstance, puis de tester laDatevaleur de temps de. Si la date n'est pas valide, la valeur d'heure estNaN. J'ai vérifié avec ECMA-262 et ce comportement est dans la norme, c'est exactement ce que je recherche.
return ( Object.prototype.toString.call(d) === "[object Date]" && !isNaN(d.getTime()) );