From 63b48929af25361fa0610fb12584523093bd4d33 Mon Sep 17 00:00:00 2001 From: Dennis Eisold <de@roadit.de> Date: Tue, 29 Oct 2019 21:40:52 +0100 Subject: [PATCH] Fixed error in addiereTage --- src/de/itstall/Datum.java | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/de/itstall/Datum.java b/src/de/itstall/Datum.java index 0a5e7d7..9500fdb 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); } } -- GitLab