Announcement

Collapse
No announcement yet.

Zeitdifferenz ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeitdifferenz ermitteln

    Hallo,

    ich möchte die Zeitdifferenz zwischen zwei Datumsangaben in Monaten und Tagen errechnen.

    procedure Dauer(StartTag,EndTag:tDateTime;var tag,mon:word);
    var divZeit :double;
    Jahr :word;
    begin
    diffzeit:=StartTag-EndTag;
    DecodeDate(diffZeit,Jahr, Mon, tag);
    end;

    leider bringt dieser Code kein korrektes Ergebnis. Gibt es eine weitere Möglichkeit eine
    korrekte Ermittlung der Differenz in Tagen und Monaten zu ermitteln?

    Gruß

    Heiko

  • #2
    <PRE>
    hallo,

    such mal hier im forum nach dem beitrag
    "Differenz zwischen zwei Uhrzeiten berechnen"

    </PRE&gt

    Comment


    • #3
      Hallo,

      ich denke, das ist fast ein "philosophisches" Problem. Wie lang ist ein Monat? 28 (29), 30 oder 31 Tage? Wenn man sich auf die bei den Banken üblichen 30 Tage festlegst, dann geht's einfach:

      <PRE>
      procedure Dauer(StartTag,EndTag:tDateTime;var tage,mon:word);
      begin
      mon := trunc(EndTag-StartTag) div 30;
      tage := trunc(EndTag-StartTag) mod 30;
      end;
      </PRE>

      Gruß, Werne

      Comment


      • #4
        Korrekt, es gibt eigentlich nur wenige "Ausnahmen" in denen nicht so gerechnet werden kann. z.B. Geburtstage oder Kalender.

        Gruß Hage

        Comment


        • #5
          Irgendwie steh ich neben der Schiene....

          ich versuche es gerade mit folgendem Code:
          <PRE>
          procedure TVorgangsForm.BisDatEditExit(Sender: TObject);
          var tage,mon:word;
          begin
          mon := trunc(BisDatEdit.Date-VonDatEdit.Date) div 30;
          tage := trunc(BisDatEdit.Date-VonDatEdit.Date) mod 30;
          label33.caption := format(' Mietdauer: Monate: %d Tage: %d ',[mon,tage]);
          end;

          habe ich nun die Daten von = 20.12.2002 und bis 02.01.2003
          bekomme ich das Ergebnis 13 Tage !

          Noch´n Tipp?

          Gruß

          Heiko
          </PRE&gt

          Comment


          • #6
            Jo stimmt doch, zwischen dem 20.12.2002 und dem 02.01.2003 liegen exakt 13 Tage. Genauer gesagt zwischen dem 20.12.2002 00:00 und 01.01.2003 23:59 ~~ 02.01.2003 00:00.

            Gruß Hage

            Comment

            Working...
            X