Hallo allerseits,
ich habe ein Date-Objekt (ja, ich weiß, dass es veraltet ist. Aber ich habe es trotzdem ) Ich brauche jetzt ein weiteres Date-Objekt, das einen Monat später ist.
Solange das Datum in der Mitte des Monats ist (z.B. 18.3.2008) ist es kein Problem. Da würde ich ein Calendar-Objekt erstellen, dort die Änderung durchführen und anschließend wieder ein Date-Objekt erstellen.
Nun kommt aber das Problem, dass nicht jeder Monat mehr als 28 Tage hat. Wenn also der Tag größer als 28 ist, möchte ich den Monatsletzten des nächsten Monats erhalten. Beispiel: ich habe den 30.9.2008 und möchte als Ergebnis den 31.10.2008 bekommen. Der nächste Monatsletzte wäre der 30.11.2008.
Mit aufwändigen Abfragen würde mir das möglicherweise gelingen. Aber gibt es auch eine vergleichsweise einfache Möglichkeit?
Stunden und Minuten sind übrigens egal. Die sind bei mir alle auf 0 gesetzt. Mich interessiert also lediglich das Datum.
Gruß
Hobbes
ich habe ein Date-Objekt (ja, ich weiß, dass es veraltet ist. Aber ich habe es trotzdem ) Ich brauche jetzt ein weiteres Date-Objekt, das einen Monat später ist.
Solange das Datum in der Mitte des Monats ist (z.B. 18.3.2008) ist es kein Problem. Da würde ich ein Calendar-Objekt erstellen, dort die Änderung durchführen und anschließend wieder ein Date-Objekt erstellen.
Nun kommt aber das Problem, dass nicht jeder Monat mehr als 28 Tage hat. Wenn also der Tag größer als 28 ist, möchte ich den Monatsletzten des nächsten Monats erhalten. Beispiel: ich habe den 30.9.2008 und möchte als Ergebnis den 31.10.2008 bekommen. Der nächste Monatsletzte wäre der 30.11.2008.
Mit aufwändigen Abfragen würde mir das möglicherweise gelingen. Aber gibt es auch eine vergleichsweise einfache Möglichkeit?
Java:
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class AdjustDate {
public static void main(String args[]) {
Date dt = new Date();
Date dt2 = AdjustDate.addOneMonth(dt);
System.out.println(dt2);
}
public static Date addOneMonth(Date dt) {
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(dt);
if (cal.get(Calendar.DAY_OF_MONTH) <= 28) {
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);
} else {
// setze auf den Monatsletzten des nächsten Monats
}
return cal.getTime();
}
}
Stunden und Minuten sind übrigens egal. Die sind bei mir alle auf 0 gesetzt. Mich interessiert also lediglich das Datum.
Gruß
Hobbes