Hier mal ein Auszug aud DateUtils:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| function DaysBetween(const ANow, AThen: TDateTime): Integer; begin Result := Trunc(DaySpan(ANow, AThen)); end;
function DaySpan(const ANow, AThen: TDateTime): Double; begin Result := SpanOfNowAndThen(ANow, AThen); end;
function SpanOfNowAndThen(const ANow, AThen: TDateTime): TDateTime; begin if ANow < AThen then Result := AThen - ANow else Result := ANow - AThen; end; |
Zusamengesetzt ergibt das folgendes:
Quelltext
1: 2: 3: 4:
| if ANow < AThen then Result := Trunc(AThen - ANow) else Result := Trunc(ANow - AThen); |
Das ganze auf eine Zeile reduziert sieht dann so aus:
Result := Abs(Trunc(ANow - AThen));
Übrigends: ein Trunc(ANow) - Trunc(AThen) ergibt die Anzahl der angebrochenen Tage, wobei Trunc(ANow - AThen) die Anzahl der vollen Tage (Also die Anzahl abgelaufener 24-Stunden intervalle) angibt.
Beispiel: 10.10.03 23:00 bis 12.10.03 01:00
Trunc(ANow-AThen) = 1
Trunc(ANow) - Trunc(AThen) = 2
DaysBetween gibt übrigends das erste Ergebnis zurück, wobei wohl meistens das zweite benötigt wird...
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."