Ich möchte den Unterschied zwischen gültigen und ungültigen Datumsobjekten in JS feststellen, konnte aber nicht herausfinden, wie:
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'
Irgendwelche Ideen zum Schreiben einer isValidDate
Funktion?
- Ash wird
Date.parse
zum Parsen von Datumszeichenfolgen empfohlen. Auf diese Weise können Sie überprüfen, ob die Datumszeichenfolge gültig ist. - Wenn möglich, würde ich es vorziehen, wenn meine API eine Datumsinstanz akzeptiert und prüfen / bestätigen kann, ob sie gültig ist oder nicht. Borgars Lösung macht das, aber ich muss es browserübergreifend testen. Ich frage mich auch, ob es einen eleganteren Weg gibt.
- Ash ließ mich überlegen, ob meine API überhaupt keine
Date
Instanzen akzeptieren sollte. Dies wäre am einfachsten zu überprüfen. - Borgar schlug vor, eine
Date
Instanz zu testen und dann denDate
Zeitwert der Instanz zu testen . Wenn das Datum ungültig ist, ist der ZeitwertNaN
. Ich habe mit ECMA-262 nachgefragt und dieses Verhalten ist im Standard enthalten, genau das, wonach ich suche.
return ( Object.prototype.toString.call(d) === "[object Date]" && !isNaN(d.getTime()) );