0

Fehler bei Monatsberechnung

Liebe Leute,
ich bin dabei ein größeres Problem in Einzelteile herunterzubrechen. 
Dazu gehört die Berechnung eines Einreichungstermins in Abhängigkeit von einem Tagungsbeginn.

Die Vorgabe: Einreichungstermin = Tagungsbeginn - 2 Monate und in dem Ergebnismonat immer am 08. D. h:

Beginn: 01.09.20 -> Einreichung: 08.07.20

Beginn 31.08.20 - > Einreichung: 08.06.20

Ich habe im Forum folgende zwei Beispiele gefunden:

let YEA := year(Beginn);
let MON := month(Beginn);
let DAY := day(Beginn);
let 'Einzureichen bei EAD' := date(YEA, MON - 2, DAY);
format('Einzureichen bei EAD', "08.MM.YYYY")

bzw.

let myAbg := date(year(Beginn), month(Beginn) - 2, day(Beginn));
format(myAbg, "08.MM.YYYY")

Funktionieren beide super, allerdings geben beide im obigen Beispiel als Einrechungstermin den 08.07.20 aus, egal ob der Beginn der 1.9.20 oder der 31.8.20 ist. Bei 30.08.20 stimmt die Berechnung dann wieder und der 08.06.20 wird ausgegebebn.

Hat jemand eine Ahnung, wo das Problem liegt und wie es behoben werden kann?

Danke und schöne Grüße
ali

4 Antworten

null
    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hi Ali, das scheint an den zwei aufeinanderfolgenden Monate mit 31 Tagen zu liegen (Juli-August und Dezember-Januar). Hier mal eine Idee:

    let Q := if month(Beginn) = 8 or month(Beginn) = 1 then
    date(year(Beginn), month(Beginn) - 2, day(Beginn) - 1)
    else
    date(year(Beginn), month(Beginn) - 2, day(Beginn))
    end;
    format(Q, "08.MM.YYYY")

    Mirko

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Korrektur

    let Q := if month(Beginn) = 8 and day(Beginn) = 31 or month(Beginn) = 1 and day(Beginn) = 31 then
    date(year(Beginn), month(Beginn) - 2, day(Beginn) - 1)
    else
    date(year(Beginn), month(Beginn) - 2, day(Beginn))
    end;
    format(Q, "08.MM.YYYY")

    • Ali
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Lieber MZ, der Dank kommt etwas verspätet (hüstel ...) aber herzlich!
    Danke, Dein Skript funktioniert tadellos! Iast eingebaut!

    Besten Dank! :-D

    • Ali
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Lieber MZ, der Dank kommt etwas verspätet (hüstel ...) aber herzlich!
    Danke, Dein Skript funktioniert tadellos! Ist eingebaut!

    Besten Dank! :-D