diff --git a/src/de/itstall/Datum.java b/src/de/itstall/Datum.java index 0a5e7d75adeef31c7b420329d8ac848a20c3df0f..9500fdb1fb86e86f2f29c8209a70434338947e6e 100644 --- a/src/de/itstall/Datum.java +++ b/src/de/itstall/Datum.java @@ -234,20 +234,30 @@ public class Datum { long neuerTag = this.getTag() + iTage; if (neuerTag > this.getMonthDays(this.getMonat())) { + do { - this.addiereMonate(neuerTag / this.getMonthDays(this.getMonat())); - neuerTag -= this.getMonthDays(this.getMonat()); - } while (neuerTag / this.getMonthDays(this.getMonat()) < 1); + neuerTag = neuerTag - this.getMonthDays(this.getMonat()); + this.addiereMonate(1); + } while (neuerTag > this.getMonthDays(this.getMonat())); this.setTag(neuerTag % this.getMonthDays(this.getMonat())); - } else if (neuerTag <= 0) { - do { - this.addiereMonate(neuerTag / this.getMonthDays(this.getMonat()) - 1); - neuerTag -= this.getMonthDays(this.getMonat()); - } while(neuerTag / this.getMonthDays(this.getMonat()) < 1); - this.setTag(this.getMonthDays(this.getMonat()) + neuerTag % this.getMonthDays(this.getMonat())); - } else { + } + else if (iTage < 0) { + + neuerTag = this.getTag() + iTage; + long nextMonth = (this.getMonthDays(this.getMonat()) * -1); + + while(neuerTag <= nextMonth) { + this.addiereMonate(- 1); + neuerTag = neuerTag + this.getMonthDays(this.getMonat()); + nextMonth = (this.getMonthDays(this.getMonat() - 1) * -1); + } + + this.addiereMonate(- 1); + this.setTag( this.getMonthDays(this.getMonat()) + neuerTag); + + } else if(iTage != 0) { this.setTag(neuerTag); } }