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 isValidDate
fonction?
- Ash est recommandé
Date.parse
pour 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'
Date
instances par mon API , ce serait plus facile à valider. - Borgar a suggéré de tester une
Date
instance, puis de tester laDate
valeur 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()) );