Zitat von
jonny:
Ich möchte gerne zwei Datum-Werte mit einander vergleichen und den Unterschied zurückbekommen.
Beispiel ich gebe heutieges Datum ein 22.04.2005 und ein belibieges Datum in der Vergangenheit z.B. 28.02.2004 und zurück möchte ich gerne 23.01.0001 erhalten.
Ein Differenz zwischen zwei Datum-Werte kann nur in Tagen, Stunden, Minuten oder Sekunden angegeben werden !
Die Angabe von Monaten oder Jahren kann nur ein Schätzwert sein, da Monate & Jahre unterschiedliche viele Tage haben.
Man kann natürlich mit diesen Schätz-Werten arbeiten: 1 Jahr=365Tage, 1 Monat=30Tage.
Delphi-Quellcode:
procedure ZeitSpanneExpand(var zeit : Double; var jahre, monate:Integer);
begin
jahre := 0;
while zeit >= 365.0 do
begin
zeit := zeit -365.0;
Inc(jahre);
end;
monate := 0;
while zeit >= 30.0 do
begin
zeit := zeit -30.0;
Inc(monate);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
d1, d2 : TDateTime;
diff : Double;
jahre, monate:Integer;
begin
d1 := Now;
d2 := StrToDateTime('13.7.1914');
diff := d1-d2; // Differenz in Tagen
ZeitSpanneExpand(diff, jahre, monate);
ShowMessageFmt('%d Jahre; %d Monate; %2.1f Tage', [jahre, monate, diff]);
end;