Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 6 von 6
  1. #1
    Stammgast
    Registriert seit
    26.02.2003
    Ort
    Minden
    Beiträge
    422

    Standard 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. #2
    Zaungast
    Registriert seit
    26.02.2003
    Beiträge
    12

    Standard

    <PRE>
    hallo,

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

    </PRE&gt

  3. #3
    Stammgast
    Registriert seit
    26.02.2003
    Beiträge
    169

    Standard

    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

  4. #4
    Stammgast
    Registriert seit
    26.02.2003
    Beiträge
    2.937

    Standard

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

    Gruß Hage

  5. #5
    Stammgast
    Registriert seit
    26.02.2003
    Ort
    Minden
    Beiträge
    422

    Standard

    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

  6. #6
    Stammgast
    Registriert seit
    26.02.2003
    Beiträge
    2.937

    Standard

    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

 

 

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •