Umrechnung von Zeitraum in Jahre / Monate / Tage?

  • Hallo Entwickler,


    hat jemand eine brauchbare Lösung für die Umrechnung eines Zeitraums in die Angaben Jahr(e) / Monat(e) / Tag(e)?


    Zum Beispiel in der der Form:
    03.03.2006 bis 08.05.2007 = 1 Jahr(e) 2 Monat(e) 6 Tag(e)
    oder
    01.04.2006 bis 30.06.2006 = 0 Jahr(e) 3 Monat(e) 0 Tag(e)


    Schon jetzt recht herzlichen Dank für eure Beiträge.


    Gruß
    Gunter

    • Offizieller Beitrag

    - 2 x NotesDateTime (für jedes Datum)
    - mit set anyTime die Zeitkomponente löschen
    - mit ndt.TimeDifference die Zeitspanne ausrechnen
    - dann die Sekunden noch umrechnen in Jahre, Monate und Tage


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Hallo Dirk,


    danke für den Tipp, ich denke jedoch, dass es so einfach nicht ist, den ein Jahr kann unterschiedlich viele Sekunden haben (Schaltjahr oder nicht) und auch die Monate sind unterschiedlich (30 oder 31 Tage).


    Oder mache ich es zu kompliziert?


    Gruß
    Gunter

    • Offizieller Beitrag

    Ok da hast Du natürlich recht.


    Mal ins unreine gedacht, also nicht im Detail durchgespielt.


    - mach aus einem Datum ein NotesDateTime
    - mit AdjustDay den Tageswert des 2. Datums abziehen
    - mit AdjustMonth den Monatswert des 2. Datums abziehen
    - mit AdjustYear den Jahreswert des 2. Datums abziehen
    danach sollte irgendetwas im NotesDateTime stehen, was Du verwenden kannst.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Mal ins Reine gedacht: das Problem unseres Freundes besteht darin, daß er mit "Jahre" und "Monate" möglicherweise unterschiedlich lange Zeitspannen meint. Funktionieren kann es daher auch nur mit der internen Verrechnung mit diesen Einheiten, also etwa


    YDiff:=@Year(Ende)-@Year(Anfang);
    MDiff:=@Month(Ende)-@Month(Anfang);
    DDiff:=@Day(Ende)-@Day(Anfang);


    MDiff1:=@If(DDiff)<0;MDiff-1;MDiff);
    YDiff1:=@If(MDiff1)<0;YDiff-1;YDiff;


    MDiff2:=@IfMDiff1<0;MDiff1+12;MDiff1;


    Für die Tagesdifferenz muß man sich jetzt entscheiden, welchen Monat man zum "ganzen Monat" machen will, also z.B. vom 17.02.2004 bis zum 3.5.2006 den Februar im Schaltjahr (29 Tage) oder den Februar im Endjahr (28 Tage) oder den April im Endjahr (30 Tage). Dementsprechend muß man sich ein Tagesdatum basteln, das diese Tagesdifferenz (3 Tage Mai sind schon klar, n Tage aus Bestimmungsmonat sind unklar) aus dem Bestimmungsmonat hinzuzählt.


    Die Jahhresdifferenz steht dann in YDiff1, die Monatsdifferenz in MDiff2 - tja: und die Tagesdifferenz ist das, was die Fragestellung selbst unklar macht und daher nur per (willkürlicher) Definition gelöst werden kann.


    Daß das "Jahr" ebenso vage gehalten ist wie die Zeitspanne "Monat", sieht man, wenn man fragt, ob die Zeitspanne vom 28.2.2003 bis zum 29.2.2003 "1 Jahr" oder "1 Jahr und 1 Tag" ist. Spätestens bei der Differenz vom 1.3.2003 bis zum 1.3.2004 bzw. 27.2.2003 bis 28.2.2004 muß man über das, was "1 Jahr" ist, eine Entscheidung fällen, die nicht automatisch klar ist.