Mögliches Duplikat:
Erkennung einer Datumsinstanz mit "ungültigem Datum" in JavaScript
Ich habe das Folgende verwendet, um ein gültiges Datum zu erkennen:
var text = $('#Date').val();
var date = Date.parse(text);
if (isNaN(date)) {
// Invalid date
}
Ich habe jedoch festgestellt, dass Date.parse die folgenden Datumsangaben für gültig hält (mm/dd/yyyy)
- 2/30/2011
- 11/31/2011
Gibt es eine andere Möglichkeit, ungültige Daten zu erkennen, wenn die Anzahl der Tage die Gesamtzahl der Tage übersteigt? Tage im Monat überschreitet?
UPDATE: Ein noch größeres Problem ist, dass das jQuery-Validierungs-Plugin dies auch nicht als ungültiges Datum erkennt!
LÖSUNG:
Auf der Grundlage der Kommentare von @Guffa habe ich die folgende Funktion zur Validierung von Daten erstellt:
function validDate(text) {
var date = Date.parse(text);
if (isNaN(date)) {
return false;
}
var comp = text.split('/');
if (comp.length !== 3) {
return false;
}
var m = parseInt(comp[0], 10);
var d = parseInt(comp[1], 10);
var y = parseInt(comp[2], 10);
var date = new Date(y, m - 1, d);
return (date.getFullYear() == y && date.getMonth() + 1 == m && date.getDate() == d);
}
3 Stimmen
Date.parse glaubt nicht, dass sie korrekt sind, aber es wandelt sie für Sie in korrekte Daten um. Z.B..
2/30/2011
wird enden als03/02/2011
1 Stimmen
Nachdem ich für die Schließung als Duplikat gestimmt habe, habe ich festgestellt, dass die gestellte Frage lautet no identisch, obwohl es verwandt ist.
1 Stimmen
Da ich Eingaben in mehreren Sprachumgebungen unterstützen musste, haben wir einen eigenen Datums-Parser implementiert. Die einzige Möglichkeit, diesen Fehler zu erkennen, bestand darin, den von uns geparsten Monatsstring mit dem Monat zu vergleichen, der aus dem generierten Datum stammt
0 Stimmen
Verwenden Sie einfach moment.js so momentjs.com/docs/#/parsing/is-valid <3
0 Stimmen
Mögliches Duplikat von Erkennung einer Datumsinstanz mit "ungültigem Datum" in JavaScript