Probleme mit Date Objekt

esenay

Mitglied
Hallo, hab mal kurz eine Frage

gerade arbeite ich mit dem Date Objekt und habe eine Methode geschrieben, die einen Anfangsdatum und einen Enddatum nimmt. Vom Anfangsdatum wird hochgezählt bis Enddatum. Dabei werden alle Termine dazwischen in ein Text Feld reingeschrieben. Die Methode funktioniert Prima. Das einzige Problem ist, wenn innerhalb der Zeitangabe der 31 Oktober auftaucht. Diesen zählt er nämlich garnicht. Stattdessen wird der Tag vorher zweimal gezählt.
Hier ein Teil der Funktion:
HTML:
//beginDatum & endDatum sind Date Objekte

while(beginDatum.getTime() <= endDatum.getTime()){
    document.getElementById("zeitraum").value+=prepareDate(beginDatum)+";";
//prepareDate(beginDatum) konvertiert das Datum in ein Format, die die DB annimmt
var time = beginDatum.getTime();
    beginDatum.setTime( time + 86400000);
 }
danke im Voraus
PS: Kann es vielleicht an der Nichtberücksichtigung der Winter-/Sommerzeit liegen?!
 
Zuletzt bearbeitet:
Hallo,
hab jetzt das Problem entdeckt. Es liegt am Wechsel von Sommer- zu Winterzeit. Da am 30 Okt 2005 die Uhren umgestellt werden.
Hat jemand eine Ahnung, wie ich das Prüfen und ggf. Anpassen kann?
 
Hi Sven,
ich hab herausgefunden, warum es nicht funktioniert hat. Es liegt nicht an prepareDate() sondern an Sommer und Winterzeiteinstellung. Aber ich zeig dir den Code trotzdem mal:

HTML:
//BRINGT DATUM IN DIE FORM IN DIE ES IN DIE DB GESPEICHERT WIRD
function prepareDate(beginDatum){
var tag = beginDatum.getDate();
var monat = parseInt(beginDatum.getMonth(),10)+1;//weil monat in index form ist
var jahr = beginDatum.getFullYear();

if(tag < 10){
      tag = "0"+tag;
    }
    //wert Monat anpassen
if(monat < 10){
      monat = "0"+monat;
}
return jahr+"-"+monat+"-"+tag;
}

und hier ist der Code für die Funktion mit Sommer und Winterzeit Beachtung, falls noch Jemand das selbe Problem hat:
HTML:
var set = false;
	while(beginDatum.getTime() <= endDatum.getTime()){
	var min = 0;
		if(!feiertag && istFeiertag(beginDatum) || !sam && istSamstag(beginDatum) || !son && istSonntag(beginDatum) ){
			min = beginDatum.getTimezoneOffset();
			if(min < 0){
				min = -(min);
			}
		
			if(min == 120 && set == false){//Sommerzeit
				//document.getElementById("zeitraum").value+=prepareDate(beginDatum)+";";
				if(set == false){
					beginDatum = new Date( beginDatum.getTime() + 86400000 + 3600000);
					endDatum = new Date ( endDatum.getTime() + 3600000);
					//alert(endDatum);
					set = true;
				}		
			}else if(min == 60  || set == true){//normalzeit
				//document.getElementById("zeitraum").value+=prepareDate(beginDatum)+";";
				beginDatum = new Date( beginDatum.getTime() + 86400000 );
			}
			
		}else{
			min = beginDatum.getTimezoneOffset();
			if(min < 0){
				min = -(min);
			}
		
			if(min == 120 && set == false){//Sommerzeit
				document.getElementById("zeitraum").value+=prepareDate(beginDatum)+";";
				if(set == false){
					beginDatum = new Date( beginDatum.getTime() + 86400000 + 3600000);
					endDatum = new Date ( endDatum.getTime() + 3600000);
					//alert(endDatum);
					set = true;
				}		
			}else if(min == 60  || set == true){//normalzeit
				document.getElementById("zeitraum").value+=prepareDate(beginDatum)+";";
				beginDatum = new Date( beginDatum.getTime() + 86400000 );
			}
		}
	}
 

Neue Beiträge

Zurück