0

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

null
    • Tacho
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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

    • awegener
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen Dank! Das ist eine sehr lange Formel, und sie funktioniert!

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    @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