Datumsbereich anzeigen
Hallo!
Ich möchte aus einem Startdatum und einem Enddatum einen sinnvoll angezeigten Datumsbereich formatieren. Irgendwie komme ich nicht drauf.
Also z.B.
Startdatum: 20. Mai 2022
Enddatum: 23. Mai 2022
soll werden zu: 20.-23. Mai 2022.
Wenn das Enddatum im nächsten Monat liegt entsprechend z.B.:
20. Mai - 1. Juni 2022
und genauso wenn es über den Jahreswechsel geht:
20. Dezember 2022 - 1. Januar 2023
Hat jemand eine Idee?
Und das ganze soll dann einmal mit englischen Monatsnamen und einmal mit deutschen ausgegeben werden. Puh...
9 Antworten
-
Vielleicht so:
let a := BeginnDatum; let b := EndeDatum; if month(a) = month(b) and year(a) = year(b) then format(a, "DD.") + " - " + format(b, "DD. MMMM YYYY") else format(a, "DD. MMMM YYYY") + " - " + format(b, "DD. MMMM YYYY") end
-
Sehe ich auch so wie Mirko - ganz kleine Ergänzung: Wenn das Jahr das gleiche ist, aber die Monate anders sind, soll noch eine weitere Unterscheidung gemacht werden.
let a:= today(); let b:= today() + 40; (oder 4 oder 400 ... zum Ausprobieren) if month(a) = month(b) and year(a) = year(b) then format(a, "DD.") + " - " + format(b, "DD. MMMM YYYY") else if year(a) = year(b) then format(a, "DD. MMMM") + " - " + format(b, "DD. MMMM YYYY") else format(a, "DD. MMMM YYYY") + " - " + format(b, "DD. MMMM YYYY") end
-
englisch:
let a := BeginnDatum; let b := EndeDatum; if a = b then format(a, "DD. MMMM YYYY") else let result := if month(a) = month(b) and year(a) = year(b) then format(a, "DD.") + " - " + format(b, "DD. MMMM YYYY") else format(a, "DD. MMMM YYYY") + " - " + format(b, "DD. MMMM YYYY") end; let enMonth := ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; let monthNrA := month(BeginnDatum); let monthNrB := month(EndeDatum); if year(a) != year(b) or month(a) != month(b) and year(a) = year(b) then let splitter := split(result, "-"); let first := replacex(item(splitter, 0), "[a-zA-Zä]+", item(enMonth, monthNrA - 1)); let second := replacex(item(splitter, 1), "[a-zA-Zä]+", item(enMonth, monthNrB - 1)); first + " - " + second else replacex(result, "[a-zA-Zä]+", item(enMonth, monthNrA - 1)) end end
-
Wow. Vielen Dank für eure Rückmeldung.
Ich habe es mithilfe eines anderen Forumbeitrages so kombiniert:
function pn() do
let a := Startdatum;
let b := Enddatum;
if month(a) = month(b) and year(a) = year(b) then
format(a, "D.") + " - " + format(b, "DD. MMMM YYYY")
else
if year(a) = year(b) then
format(a, "D. MMMM") + " - " + format(b, "D. MMMM YYYY")
else
format(a, "D. MMMM YYYY") + " - " + format(b, "D. MMMM YYYY")
end
end
end;
let DD := pn();
let DD := replace(DD, "Januar", "January");
let DD := replace(DD, "Februar", "February");
let DD := replace(DD, "März", "March");
let DD := replace(DD, "Mai", "May");
let DD := replace(DD, "Juni", "June");
let DD := replace(DD, "Juli", "July");
let DD := replace(DD, "Oktober", "October");
let DD := replace(DD, "Dezember", "December");
DDDeine Lösung Mirko ist wohl die "Advanced" Variante... Brauch ich erstmal einen Kaffe um dadurch zu steigen.
-
Hallo SMI,
durch das "Dictionary" ist mir noch eine kompaktere Idee gekommen, die direkt auf dem deutschen Ergebnis aufsetzt:
let a:= today(); let b:= today() + 22; let deResult := if month(a) = month(b) and year(a) = year(b) then format(a, "DD.") + " - " + format(b, "DD. MMMM YYYY") else if year(a) = year(b) then format(a, "DD. MMMM") + " - " + format(b, "DD. MMMM YYYY") else format(a, "DD. MMMM YYYY") + " - " + format(b, "DD. MMMM YYYY") end let enResult := deResult; let deMonth := ["Januar", "Februar", "März", "April", "Mai", "Juni", "July", "August", "September", "Oktober", "November", "Dezember"]; let enMonth := ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; for i from 0 to 12 do enResult := replace(enResult, string(item(deMonth, i)), string(item(enMonth, i))); end; deResult + " " + enResult
Content aside
- vor 2 JahrenZuletzt aktiv
- 9Antworten
- 79Ansichten
-
2
Folge bereits