Re: Datum berechnen
16. Jul 2008, 16:44
Ja, daran liegt das.
DateTimeToStr() und die anderen Konvertierungsroutinen von Delphi gehen immer davon aus, dass der übergebene Wert ein bestimmter relativer Zeitpunkt ist. Wenn du aber zwei Zeitpunkte voneinander abziehst, was wegen des internen Formats DOUBLE wunderbar funktioniert, dann ist das Ergebnis eine Mengenangabe mit der Einheit "Tag". Wenn der Abstand der beiden voneinander subtrahierten Zeitangaben z.B. genau 48 Stunden ist, dann ist das Ergebnis 2.0 - übergeben an DateTimeToStr(2.0) erhältst du dann "01.01.1900 00:00:00".
Weil du die Tage eines Zeitabstand (einer Zeitmenge, eines Zeitintervalls) nicht als Datum interpretieren darfst, hatte ich dir die Funktion DateTimeToStr2() nahegelegt. Die Hintergründe dazu stehen in dem verlinkten Thread.
Das Refernzdatum ist der Beginn (0 Uhr) des 30.12.1899, was du durch DateTimeToStr(0) leicht feststellen kannst. Im Beitrag #6 hatte ich Sylvester 1899 angegeben, was falsch ist - ich hatte aus Versehen bei DateDelta nachgeschaut. In meiner Delphi Online-Hilfe wird bei TDateTime der Referenzzeitpunkt als 30.12.1899 12:00 Uhr angegeben, was auch falsch ist.
|