Ich brauche eine Schleife, die durchläuft Termine Intervall
Habe ich das start-und Enddatum. Ich muss Durchlaufen werden, jeden Tag zwischen diesen 2 Terminen.
Was ist der beste Weg, dies zu tun?
Kann ich empfehlen, nur so etwas wie:
Date currentDate = new Date (startDate.getTime ());
while (true) {
if (currentDate.getTime () >= endDate.getTime ())
break;
doSmth ();
currentDate = new Date (currentDate.getTime () + MILLIS_PER_DAY);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
bereit zu laufen 😉
Dito auf diejenigen, die sagen, zu verwenden, ein Kalender-Objekt.
Erhalten Sie in überraschende Schwierigkeiten, wenn Sie versuchen, ein Datum-Objekt und fügen Sie 24 Stunden, um es.
Hier ist ein Rätsel für Sie: Was ist der längste Monat des Jahres? Man könnte denken, dass es keine Antwort auf diese Frage. Sieben Monate haben 31 Tage, so dass Sie alle die gleiche Länge haben, richtig? Gut, in den Vereinigten Staaten-das wäre fast richtig, aber in Europa wäre es falsch! In Europa ist der Oktober der längste Monat. Es hat 31 Tage und 1 Stunde, da die Europäer Ihre Uhren wieder 1 Stunde für die Sommerzeit im Oktober, so dass eines Tages im Oktober letzten 25 Stunden. (Die Amerikaner jetzt anfangen, DST im November hat 30 Tage, also November ist noch kürzer als Oktober oder Dezember. Damit das Rätsel nicht so amüsant für die Amerikaner.)
Ich einmal gerieten Sie in Schwierigkeiten, indem Sie genau das tun, was Sie zu tun versuchen: ich habe ein Date-Objekt Hinzugefügt und 24 Stunden, um es in einer Schleife. Es funktioniert, solange ich nicht Kreuz Sommerzeit Grenzen. Aber wenn ich das getan habe, plötzlich habe ich ausgelassen, Tag oder Treffer am selben Tag zweimal, denn Mitternacht 8. März 2009 + 24 Stunden = 1:00 UHR März 10. Drop-off Zeit, als ich dabei war, und 9. März wurde auf mysteriöse Weise übersprungen. Ebenfalls Mitternacht Nov 1, 2009 + 24 Stunden = 11:00 PM Nov 1, und wir treffen Nov zweimal 1.
ready to run
code 🙂Verwenden Sie ein Kalender-Objekt, wenn Sie wollen, zum Bearbeiten von Datumsangaben.
Oder verwenden Sie Joda Time
Empfehle ich mit Joda time:
Java Joda Time - Implementieren Sie einen Datumsbereich iterator