Maison > interface Web > js tutoriel > Comment puis-je détecter de manière fiable les instances de date invalides en JavaScript ?

Comment puis-je détecter de manière fiable les instances de date invalides en JavaScript ?

Linda Hamilton
Libérer: 2024-12-10 15:04:11
original
392 Les gens l'ont consulté

How Can I Reliably Detect Invalid Date Instances in JavaScript?

Détection d'instance de date invalide en JavaScript

La validation d'objets de date en JavaScript peut être difficile en raison de l'existence d'instances de « date invalide ». Ces objets semblent valides (instanceof Date renvoie true) mais représentent des dates non valides. Cet article explore différentes approches pour détecter de tels cas.

Question originale

Le code fourni illustre le problème :

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'
Copier après la connexion

Recommandé Solutions

1. Validez à l'aide de Date.parse()

Date.parse analyse une chaîne de date et renvoie une date valide ou NaN si la chaîne n'est pas valide. Cela peut être utilisé pour valider les chaînes de date avant de créer un objet Date :

if (Date.parse("foo") === NaN) {
  // invalid date string
}
Copier après la connexion

2. Test de la valeur temporelle NaN

Pour les instances Date existantes, vous pouvez tester la valeur temporelle (getTime() ou valueOf()) :

if (isNaN(d.getTime())) {
  // invalid Date object
}
Copier après la connexion

Cette méthode s'appuie sur l'ECMA -262, qui indique qu'un objet Date non valide a une valeur temporelle NaN.

Préféré Code

Sur la base de ces recommandations, la fonction suivante peut être utilisée pour valider les instances de Date :

function isValidDate(d) {
  return d instanceof Date && !isNaN(d);
}
Copier après la connexion
Copier après la connexion

Méthode alternative

Si vous n'êtes pas concerné par les objets Date provenant de contextes JS externes, cette forme plus simple peut être préféré :

function isValidDate(d) {
  return d instanceof Date && !isNaN(d);
}
Copier après la connexion
Copier après la connexion

Remarque

Cette réponse se concentre sur la validation des instances de Date, mais il est important de noter qu'elle ne couvre pas la validité de la saisie de date elle-même (par ex. , 32/13/2013).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal