• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Restzeit von 2 Datumsangaben ermitteln

OliverN_27

Neues Mitglied
Hallo

Ich weiß dass das Thema sicher schon sehr oft angepackt wurde, aber ich weiß trotzdem momentan nicht so ganz wo ich da anfangen soll.
Ich habe 2 Datumsangaben:
Code:
var start = "MON DEC 12 12:10:00 UTC+0100 2011";
var end   = "FRI DEC 16 12:10:00 UTC+0100 2011";

Ich würde jetzt gern mit einer FOR-Schleife die einzelnen "TAGE" durchgehen und testweise jeden einzelnen Tag mit "alert" ausgeben lassen.
Wie krieg ich das hin?

Vielen Dank
 
Dieses Format ist schon mal sehr gut, denn damit kannst du direkt ein Date Objekt erzeugen. Dann musst du nur jeweils denn Tag um eins erhöhen und prüfen ob der Wert kleiner ist als das end Datum. Du kannst Date Objekte unmittelbar miteinander vergleichen.
 
als kleine Gedankenanregung:

Code:
var start = "MON DEC 12 12:10:00 UTC+0100 2011";
var end   = "FRI DEC 16 12:10:00 UTC+0100 2011";

startDate = new Date(start);
endDate = new Date(end);
alert ((endDate.getTime() - startDate.getTime())/1000/60/60/24);

dürfte 4 rauskommen :)
 
Mein Versuch wäre dann jetzt folgender:
Code:
var startDate = new Date(A.start_date);
var endDate   = new Date(A.end_date);
var restzeit  = (endDate.getTime() - startDate.getTime()) / 1000 / 60 / 60 / 24;
       
for (var i = 1; i <= restzeit; i++) {
   var neuDate = startDate.getTime() + (i * 24 * 60 * 60 * 1000);
   alert (neuDate);
}

1. wenn ich mir "restzeit" ausgeben lasse seh ich gar nichts :-(
2. kann ich denn die Zeit (den jeweiligen Tageswert in "i") einfach so drauf rechnen lassen ?
3. wie bekomme ich anschließend aus dem Millisekundenwert wieder mein Datum ?

Vielen Dank
 
Der Fehler scheint hier zu liegen:

Code:
var startDate = new Date(A.start_date);
var endDate   = new Date(A.end_date);

Ich habe Dein script mit den festen werten vom Anfang getestet, und da hat es funktioniert...

und nen Datum kannst du mit getFullYear(), getMonth() und getDate() zusammenbasteln...
 
Zuletzt bearbeitet:
Mein Versuch wäre dann jetzt folgender:
Code:
var startDate = new Date(A.start_date);
var endDate   = new Date(A.end_date);
var restzeit  = (endDate.getTime() - startDate.getTime()) / 1000 / 60 / 60 / 24;
       
for (var i = 1; i <= restzeit; i++) {
   var neuDate = startDate.getTime() + (i * 24 * 60 * 60 * 1000);
   alert (neuDate);
}

1. wenn ich mir "restzeit" ausgeben lasse seh ich gar nichts :-(
2. kann ich denn die Zeit (den jeweiligen Tageswert in "i") einfach so drauf rechnen lassen ?
3. wie bekomme ich anschließend aus dem Millisekundenwert wieder mein Datum ?

Vielen Dank
1. Schau mal in die Fehlerkonsole, der Code funktioniert nicht.
2. Du musst nicht mit dem Timestamp arbeiten, du kannst direkt mit dem Date Objekt arbeiten und mit einer Funktion auch die Tage setzen SELFHTML: JavaScript / Objektreferenz / Date
3. Das ist dann nicht nötig.
 
Weil der Ansatz schon nicht gut ist, hier mal ein Beispiel:
Code:
var start = new Date("DEC 12 12:10:00 UTC+0100 2011");
var end   = new Date("JAN 16 12:10:00 UTC+0100 2012");

while(start < end){
	document.write(start + '<br>')
	start.setDate(start.getDate() + 1);
}

Ich hab ein anderes Datum genommen, um zu zeigen, dass es auch funktioniert, wenn setDate() einen ungültigen Wert hat (was bei selfhtml falsch steht)
 
Zurück
Oben