// 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





