Bestehendes Datum um 1 Tag erhöhen

Mögliche Duplikate:
Wie kann ich ein Datum um einen Tag in Java erhöhen?

Ich habe ein vorhandenes Datumsobjekt, das ich um einen Tag erhöhen möchte, während jedes andere Feld gleich bleibt. Jedes Beispiel, in dem ich auf Stunden / Minuten / Sekunden gestoßen bin, oder Sie müssen ein neues Datumsobjekt erstellen und die Felder übertragen. Kann man das Tagesfeld einfach um 1 vorrücken?

Vielen Dank

EDIT: Sorry, ich meine nicht, den Wert des Tages um eins zu erhöhen, ich meinte den Tag um 1 vorzuschieben

 Calendar c = Calendar.getInstance(); c.setTime(yourdate); c.add(Calendar.DATE, 1); Date newDate = c.getTime(); 

Das Date Objekt selbst (vorausgesetzt, Sie meinen java.util.Date ) hat kein Day-Feld , sondern nur einen Wert von “Millisekunden seit Unix Epoch”. (Die Methode toString() druckt dies abhängig vom aktuellen Gebietsschema.)

Abhängig davon, was Sie tun möchten, gibt es im Prinzip zwei Möglichkeiten:

  • Wenn Sie einfach “genau 24 Stunden nach dem angegebenen Datum” möchten, können Sie einfach 1000 * 60 * 60 * 24 Millisekunden zum Zeitwert hinzufügen und dann dies einstellen. Wenn eine Sommerzeitverschiebung dazwischen liegt, könnte es sein, dass dein altes Datum am 11:07 war und das neue am 10:07 oder 12:07 (abhängig von der Richtung der Verschiebung), aber immer noch genau 24 ist Stundenunterschied.

     private final static long MILLISECONDS_PER_DAY = 1000L * 60 * 60 * 24; /** * shift the given Date by exactly 24 hours. */ public static void shiftDate(Date d) { long time = d.getTime(); time += MILLISECONDS_PER_DAY; d.setTime(time); } 
  • Wenn Sie “die gleiche Zeit am nächsten Kalendertag” haben möchten, verwenden Sie besser einen Kalender, wie MeBigFatGuy gezeigt hat. (Vielleicht möchten Sie auch der TimeZone diese Methode getInstance() geben, wenn Sie nicht möchten, dass Ihre lokale Zeitzone verwendet wird.)

     /** * Shifts the given Date to the same time at the next day. * This uses the current time zone. */ public static void shiftDate(Date d) { Calendar c = Calendar.getInstance(); c.setTime(d); c.add(Calendar.DATE, 1); d.setTime(c.getTimeInMillis()); } 

    Wenn Sie mehrere solcher Datumsmanipulationen durchführen, verwenden Sie lieber direkt ein Kalenderobjekt, anstatt immer wieder von und zu Datum zu konvertieren.

 org.apache.commons.lang.time.DateUtils.addDays(date, 1);