Datumsvergleich

Boof

Mitglied
Hi Community,

ich habe ein kleines Problem.
Und zwar möchte ich Daten vergleichen. Bei allen Daten die in der Vergangenheit liegen soll eine Fehlermeldung auftauchen. Soweit hab ich das auch schon hinbekommen.
Das Problem wäre jetzt:

Aktuelles Datum: 06.04.2006
Eingegebenes Datum: 02.08.2006 -- >Funktioniert nicht

Es kommt die Fehlermeldung obwohl der Wert nicht in der Vergangenheit liegt.

Ich habe für den Tag, den Monat und das Jahr jeweils ein Formularfeld das ich überprüfe ob der eingetragene Wert kleiner ist als der Wert des aktuellen Datums.

Es ist mir schon klar das es dann so nicht funktionieren kann aber was kann ich tun damit es funktioniert ?

Hier mal mein Code der alle Formularfelder einzeln abfragt:

Javascript:
function aufgabepruefen () {

//Aktuelles Datum
var aktuell = new Date();
var jahr = aktuell.getYear();
var monat = aktuell.getMonth()+1;
var tag = aktuell.getDate();

//Variablen für die Formularfelder
															
//Startdatum												
var starttag = document.aufgabe.startdatumtag.value;		
var startmonat = document.aufgabe.startdatummonat.value;	
var startjahr = document.aufgabe.startdatumjahr.value;

//Die eigentliche Abfrage
	if (starttag != "" || startmonat != "" || startjahr != "") {
		if (startjahr < jahr || startmonat < monat || starttag < tag) { 
			alert ("Das Startdatum ist nicht gültig da es in der Vergangenheit liegt");
		}
	}
}

Wie schaffe ich es bloss, dass wenn der eingetragende Monat größer ist als der aktuelle Monat der eingetragende Wert des Tages kleiner sein darf als der aktuelle Wert des Tages ?

Bin für jeden Tip dankbar.
 
Zuletzt bearbeitet von einem Moderator:
Hi,

du kannst mit der Methode parse des Date-Objektes den eingetragenen Zeitpunkt in Millisekunden
umrechnen. Das gleiche erfolgt mit dem aktuellen Datum. Diese beiden Werte kannst du problemlos
vergleichen und analysieren.

Im folgenden Beispiel habe ich für das aktuelle Datum als Uhrzeit Mitternacht gewählt - kannst du ja an
deine Bedürfnisse anpassen.
Code:
function aufgabepruefen () {
  //Aktuelles Datum
  var aktuell = new Date();
  var jahr = aktuell.getYear();
  var monat = aktuell.getMonth()+1;
  var tag = aktuell.getDate();

  // Vergleichsdatum zum heutigen Tag um 0 Uhr
  var objCompDate = new Date(jahr, monat, tag, 0, 0, 0);
  // Millisekunden zum 01.01.1970 ermitteln
  var longCompMS = Date.parse(objCompDate);

  //Variablen für die Formularfelder
  //Startdatum
  var starttag = document.aufgabe.startdatumtag.value;
  var startmonat = document.aufgabe.startdatummonat.value;
  var startjahr = document.aufgabe.startdatumjahr.value;

  // Date-Objekt zum eingegebenen Datum
  var objTestDate = new Date(startjahr, startmonat, starttag, 0, 0, 0);
  // Millisekunden vom 01.01.1970 ermitteln
  var longTestMS = Date.parse(objTestDate);

  // Falls das Datum in der Vergangenheit liegt
  if(longTestMS < longCompMS){
    alert("Das Startdatum ist nicht gültig, da es in der Vergangenheit liegt!");
  }
}

Ciao
Quaese
 
Wow das funktioniert perfekt.

Vielen vielen Dank.

Leider verstehe ich ein paar Sachen in dem Script noch nicht so ganz aber das werde ich mir nochmal genauer angucken also die einzelnen Befehle u.s.w.

Dann klappt das schon.

Auf die Lösung wär ich nie gekommen hatte ganz andere Lösungsideen zu der Problematik.
Gut das es dieses Forum gibt ;)
 
Zurück