Erkennung ungültiger Datumsinstanzen in JavaScript
Die Validierung von Datumsobjekten in JavaScript kann aufgrund der Existenz von „ungültigen Datumsinstanzen“ eine Herausforderung darstellen. Diese Objekte scheinen gültig zu sein (instanceof Date gibt „true“ zurück), stellen jedoch ungültige Datumsangaben dar. In diesem Artikel werden verschiedene Ansätze zur Erkennung solcher Fälle untersucht.
Ursprüngliche Frage
Der bereitgestellte Code veranschaulicht das Problem:
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'
Empfohlen Lösungen
1. Validieren mit Date.parse()
Date.parse analysiert eine Datumszeichenfolge und gibt ein gültiges Datum oder NaN zurück, wenn die Zeichenfolge ungültig ist. Dies kann verwendet werden, um Datumszeichenfolgen vor dem Erstellen eines Datumsobjekts zu validieren:
if (Date.parse("foo") === NaN) { // invalid date string }
2. Auf NaN-Zeitwert testen
Für vorhandene Date-Instanzen können Sie den Zeitwert testen (getTime() oder valueOf()):
if (isNaN(d.getTime())) { // invalid Date object }
Diese Methode basiert auf ECMA -262-Spezifikation, die angibt, dass ein ungültiges Datumsobjekt einen NaN-Zeitwert hat.
Bevorzugt Code
Basierend auf diesen Empfehlungen kann die folgende Funktion zur Validierung von Datumsinstanzen verwendet werden:
function isValidDate(d) { return d instanceof Date && !isNaN(d); }
Alternative Methode
If Wenn Sie sich nicht mit Datumsobjekten aus externen JS-Kontexten befassen, ist dies möglicherweise eine einfachere Form bevorzugt:
function isValidDate(d) { return d instanceof Date && !isNaN(d); }
Hinweis
Diese Antwort konzentriert sich auf die Validierung von Datumsinstanzen, es ist jedoch wichtig zu beachten, dass sie nicht die Gültigkeit der Datumseingabe selbst abdeckt (z. B. , 32.13.2013).
Das obige ist der detaillierte Inhalt vonWie kann ich ungültige Datumsinstanzen in JavaScript zuverlässig erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!