Fehler im Javascript (Datumsvergleich)
Hallo zusammen,
ich habe ein Javascript, wlehes ein Datum zerlegen und vergleichen soll. Nur irgendwie wirft mir das Script Mist raus.
Das Datum soll im Format Jahr-Monat-Tag (YYYY-MM-DD) eingegeben werden.
Die Überprüfung des Jahres klappt, jedoch nicht des tages und des Monats.
Hier ist mein code.
Der window.alert(datum_eingabe + ... ist nur zum debigging vorhanden.
Für Tipps bin ich sehr dankbar.
Gruß
ich habe ein Javascript, wlehes ein Datum zerlegen und vergleichen soll. Nur irgendwie wirft mir das Script Mist raus.
Das Datum soll im Format Jahr-Monat-Tag (YYYY-MM-DD) eingegeben werden.
Die Überprüfung des Jahres klappt, jedoch nicht des tages und des Monats.
Hier ist mein code.
Der window.alert(datum_eingabe + ... ist nur zum debigging vorhanden.
function formcheck(){
var datum_eingabe = document.terminadd.datum.value;
var dat_in = datum_eingabe.split("-");
var eing_jahr = dat_in
var eing_monat = dat_in[1]
var eing_tag = dat_in[2]
var objdatum_existiert = new Date(eing_jahr, eing_monat, eing_tag);
var vergleich = new Date();
// Erweitern um eine 0 wenn die Zahl < 10 ist
if (objdatum_existiert.getMonth() < 10){
var monat_neu = "0" + objdatum_existiert.getMonth();
}
if (objdatum_existiert.getDay() < 10){
var tag_neu = "0" + objdatum_existiert.getDay();
}
// Zusammenbau des späteren Vergleichsstrings
vergleich = objdatum_existiert.getFullYear() + "-" + monat_neu + "-" + tag_neu;
window.alert(datum_eingabe + " = " + vergleich);
// Vergleich der Daten
if(datum_eingabe == vergleich){
return true
}else{
window.alert("Datum ist ungültig. Bitte Format und Datum prüfen. \n Datumsformat: YYYY-MM-DD - Bsp: 2011-12-31");
return false
}
}
Für Tipps bin ich sehr dankbar.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 223098
Url: https://administrator.de/forum/fehler-im-javascript-datumsvergleich-223098.html
Ausgedruckt am: 11.04.2025 um 11:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo killtec,
das
wie man Datum's korrekt erzeugt kannst du hier nachlesen. Außerdem fehlen bei dir so manche Semikolons am Ende von Zeilen...
Grüße Uwe
das
new Date()
beginnt bei Monaten bei 0 zu zählen. machs mal so:function formcheck(){
var datum_eingabe = document.terminadd.datum.value;
var pattern = /^\d{4}-\d{1,2}-\d{1,2}$/;
if (pattern.test(datum_eingabe) == true){
//Format passt, prüfe nun noch ob das Datum gültig ist
var dat_in = datum_eingabe.split("-");
var eing_jahr = parseInt(dat_in);
var eing_monat = parseInt(dat_in[1]);
var eing_tag = parseInt(dat_in[2]);
var dateConverted = new Date(eing_jahr,eing_monat-1, eing_tag);
if (dateConverted.getFullYear() != eing_jahr || dateConverted.getMonth()+1 != eing_monat || dateConverted.getDate() != eing_tag){
//Datum ist ungültig
alert("Dieses Datum existiert nicht");
return false;
}else{
//Datum ist OK
return true;
}
}else{
//Datum hat nicht das richtige Eingabeformat
alert("Datum ist ungültig. Bitte Format prüfen. \n Datumsformat: YYYY-MM-DD - Bsp: 2011-12-31");
return false;
}
}
Grüße Uwe
Hallo killtec
Definiere "Mist" !
Ich kann mir kaum vorstellen das sich ein Popup öffnet in dem nur dieses eine Wort steht:
...oder hebt dein Tower etwa das Stromkabel und scheidet Mist aus dem NT-Lüfter aus !?
Mit einer Lösungsantwort ala: "Mach das mal __richtig__" wärst du ja auch nicht zufrieden -> Definiere: "richtig"
Die Variablen
bzw. existieren __nur wenn__ die Eingaben kleiner als 10 sind
~Arano
Definiere "Mist" !
Ich kann mir kaum vorstellen das sich ein Popup öffnet in dem nur dieses eine Wort steht:
alert("Mist");
...oder hebt dein Tower etwa das Stromkabel und scheidet Mist aus dem NT-Lüfter aus !?
Mit einer Lösungsantwort ala: "Mach das mal __richtig__" wärst du ja auch nicht zufrieden -> Definiere: "richtig"
vergleich = objdatum_existiert.getFullYear() + "-" + monat_neu + "-" + tag_neu;
monat_neu
und tag_neu
__existieren nicht__ !bzw. existieren __nur wenn__ die Eingaben kleiner als 10 sind
~Arano