Jahre und Monate
Hallo,
ich bin ein Textleser und möchte deswegen z.B. die Zeitdauer in einem Format "XX Jahre und XX Monate" angezeigt bekommen und nicht als "3,6 Jahre" oder "44 Monate". Das eine und das andere bekomme ich hin, aber wie schaffe ich es, aus einer Periodenberechnung (zwei Datumsfelder) angezeigt zu bekommen: "X Jahre und Y Monate" ?
Vielen Dank für jeden hilfreichen Tipp!
Auszug:
let myStart := min(Kaufliste[Sparplan = 1].Datum);
let myRestart := min(Kaufliste[Sparplan = 1 and Datum > myDate].Datum);
let myDar := round(myDauer / 2628000000, 0);
let myReDauer := round((today() - myRestart) / 2628000000, 0);
dann geht es um diese Zeile:
round((myDar + myReDauer) / 12, 0) + " Jahre " + "und wie weiter?"
3 Antworten
-
Versuch es mal so, wobei das erste Datumsfeld "Start" und das zweite Datumsfeld "Ende" heißt.
---------
let curMon := month(Ende);
let curDay := day(Ende);
let curYea := year(Ende);
let birMon := month(Start);
let birDay := day(Start);
let birYear := year(Start);
let myyear := if curMon > birMon then
curYea - birYear
else
if curDay >= birDay then curYea - birYear else curYea - birYear - 1 end
end;
let myTextY := if myyear = 1 then " Jahr, " else " Jahre, " end;
let myMo := if curMon < birMon then curMon - birMon + 12 else curMon - birMon end;
let myMon := if curDay < birDay then
if myMo = 0 then 11 else myMo - 1 end
else
myMo
end;
let mydays := if curDay >= birDay then
day(Ende) - day(Start)
else
if curMon = 1 or curMon = 2 or curMon = 4 or curMon = 6 or curMon = 8 or curMon = 9 or curMon = 11 then
day(Ende) - day(Start) + 31
else
if curMon = 5 or curMon = 7 or curMon = 10 or curMon = 12 then
day(Ende) - day(Start) + 30
else
if curMon = 3 then
if year(Ende) % 4 = 0 then
day(Ende) - day(Start) + 29
else
day(Ende) - day(Start) + 28
end
end
end
end
end;
let myTextM := if myMon = 1 then " Monat, " else " Monate, " end;
myyear + myTextY + myMon + myTextM + mydays + " Tag(e)"------
Gruß
Tacho -
Vielen Dank! Das ist eine sehr lange Formel, und sie funktioniert!
-
@Tacho. Hallo. Ich hoffe, es ist Dir recht, dass ich etwas in Deiner Formel rumgebastelt habe, da sie nicht ganz korrekt funktioniert (Bsp: 29.2.2016-28.02.2020 und 12.12.2019-12.02.2020). Nun hoffe ich natürlich, dass meine Korrektur nicht auch noch Fehler hat ;-)
*
let curMon := month(Ende);
let curDay := day(Ende);
let curYea := year(Ende);
let birMon := month(Start);
let birDay := day(Start);
let birYear := year(Start);
let myyear := if curMon = birMon and curDay < birDay then
curYea - birYear - 1
else
if curMon < birMon then curYea - birYear - 1 else curYea - birYear end
end;
let myMo := if curMon < birMon then curMon - birMon + 12 else curMon - birMon end;
let myMon := if curDay < birDay then
if myMo = 0 then 11 else myMo - 1 end
else
myMo
end;
let mydays := if curDay >= birDay then
day(Ende) - day(Start)
else
if birMon = 1 or birMon = 3 or birMon = 5 or birMon = 7 or birMon = 8 or birMon = 10 or birMon = 12 then
day(Ende) + 31 - day(Start)
else
if birMon = 4 or birMon = 6 or birMon = 9 or birMon = 11 then
day(Ende) + 30 - day(Start)
else
if birMon = 2 then
if year(Ende) % 4 = 0 then
day(Ende) + 29 - day(Start)
else
day(Ende) + 28 - day(Start)
end
end
end
end
end;
let myTextY := if myyear = 1 then " Jahr, " else " Jahre, " end;
let myTextM := if myMon = 1 then " Monat, " else " Monate, " end;
let myTextD := if mydays = 1 then " Tag" else " Tage" end;
if myyear = 0 then
myMon + myTextM + mydays + myTextD
else
if myMon = 0 then
myyear + myTextY + mydays + myTextD
else
if mydays = 0 then
myyear + myTextY + myMon + myTextM
else
myyear + myTextY + myMon + myTextM + mydays + myTextD
end
end
end
*
Gruß Mirko
Content aside
- vor 4 JahrenZuletzt aktiv
- 3Antworten
- 461Ansichten