// Es werden Differenzen zwischen zwei Zeitpunkten berechnet. // 1. Diese Funktion berechnet die Anzahl der Tage, die zwischen // zwei Kalendertagen (einschließlich dem letzten Tag) verflossen sind. // (Das benötigt man z.B. um einen julianischen Kalender zu erstellen) function diff(erstertag, zweitertag: string): integer; var e, z: TDate; begin e := strtodate(erstertag); z := strtodate(zweitertag); result := trunc(z - e + 1); end; // Beispielaufruf procedure TForm1.Button3Click(Sender: TObject); var se, sz: string; begin se := '1.1.2000'; sz := '15.2.2000'; showmessage('Vom ' + se + ' bis einschließlich dem ' + sz + ' sind ' + inttostr(diff(se, sz)) + ' Tage vergangen.'); end; // ------------------------------------------------------------------- // 2. Diese Funktion berechnet Tage, Stunden, Minuten und Sekunden, // welche zwischen zwei Zeitpunkten liegen. function differenz(Start, Ende: string; var tge, std, min, sek: integer): boolean; var dt, h: Double; begin try dt := strtodatetime(Ende) - strtodatetime(Start); tge := trunc(dt); h := frac(dt); std := trunc(h * 24); min := trunc(h * 1440) mod 60; sek := round(h * 86400) mod 60; result := true; except result := false; end; end; // Beispielaufruf procedure TForm1.Button3Click(Sender: TObject); var Tage, Stunden, Minuten, Sekunden: integer; Von, Bis: string; begin Von := '24.12.1999 10:02:32'; Bis := '1.1.00 12:17'; if differenz(Von, Bis, Tage, Stunden, Minuten, Sekunden) then showmessage(inttostr(tage) + ' Tag(e)'#13#10 + inttostr(stunden) + ' Stunde(n)'#13#10 + inttostr(minuten) + ' Minute(n)'#13#10 + inttostr(sekunden) + ' Sekunde(n)') else showmessage('FEHLER!'); end; // ------------------------------------------------------------------- // 3. Die folgende Funktion berechnet eine Zeitdifferenz innerhalb // von 24 Stunden, auch wenn die Anfangszeit vor Mitternacht // und die Endzeit nach Mitternacht liegt. function StdMinSek(von, bis: TTime): string; begin result := formatdatetime('h:mm:ss', bis + ord(von > bis) - von); end; // Beispielaufruf procedure TForm1.Button3Click(Sender: TObject); begin showmessage(StdMinSek(StrToTime('22:35:07'), StrToTime('4:57:13'))); end;
function JahresDiff(s1, s2: string): string; var t1, t2, m1, m2, j1, j2: word; jahre, monate, tage: integer; d1, d2, dh: TDate; begin d1 := strtodate(s1); d2 := strtodate(s2); if d1 > d2 then begin dh := d1; d1 := d2; d2 := dh; end; decodedate(d1, j1, m1, t1); decodedate(d2, j2, m2, t2); jahre := j2 - j1; monate := m2 - m1; tage := t2 - t1; if tage < 0 then dec(monate); if monate < 0 then dec(jahre); result := inttostr(jahre); end; // Beispielaufruf procedure TForm1.Button3Click(Sender: TObject); begin try Edit1.Text := JahresDiff('1.3.2000', '31.12.2005'); except Edit1.Text := 'Fehler bei Datumseingabe'; end; end;
function rech(Datum: string): integer; var w1, w2, dummy: word; D: TDate; begin D := StrToDate(Datum); DecodeDate(Date, w1, dummy, dummy); DecodeDate(D, w2, dummy, dummy); Result := w1 - w2; if FormatDateTime('mmdd', Date) < FormatDateTime('mmdd', D) then dec(result); end; // Beispielaufruf procedure TForm1.Button5Click(Sender: TObject); begin showmessage(intToStr(rech('24.10.1948'))); end;
function Alter(Geburtstag: string): integer; begin result := trunc((now - strtodate(Geburtstag)) / 365.2425); end; // Beispielaufruf procedure TForm1.Button3Click(Sender: TObject); var a: integer; begin a := Alter('18.5.1968'); showmessage('Alter: ' + inttostr(a)); end; // Querverweis: das Alter aus dem Geburtstag errechnen |
Zugriffe seit 6.9.2001 auf Delphi-Ecke