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
-
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
-
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")
-
Lieber MZ, der Dank kommt etwas verspätet (hüstel ...) aber herzlich!
Danke, Dein Skript funktioniert tadellos! Iast eingebaut!Besten Dank! :-D
-
Lieber MZ, der Dank kommt etwas verspätet (hüstel ...) aber herzlich!
Danke, Dein Skript funktioniert tadellos! Ist eingebaut!Besten Dank! :-D
Content aside
- vor 3 JahrenZuletzt aktiv
- 4Antworten
- 460Ansichten