Registriert seit: 23. Jul 2009
89 Beiträge
Delphi 11 Alexandria
|
TDateTime Rechnungen über 0 ('30.12.1899 00:00')
5. Mär 2015, 12:05
Delphi-Version: XE7
Hallo Zusammen,
ich bin über eine interessante Eigenheit vom des TDateTime - Formats gestoßen:
Wenn ein Datum < '30.12.1899' , also intern 0 ist, verhält sich der Wert des Datums gespiegelt zu den Werten > 0 (Wie auch in der Dokumentation beschrieben)
Was zur Folge hat das, vom Datum her -0,5 = 0,5 = '30.12.1899 12:00' ist.
Für mich ist der Umstand das es hier gespiegelt und nicht chronologisch im Datumsformat weiter geht unlogisch und führt bei Rechenoperationen die den 0 - Wert über bzw unterschreiten zu Problemen (Wenn vom '31.12.1899 00:00' 1,5 Tage abgezogen werden, kommt der '30.12.1899 12:00' heraus)
Wie ist hier, eurer Meinung nach, der korrekte Weg um solche Berechnungen richtig abzubilden?
PS.: Im Anhang ist ein kleines Test - Projekt, mit dem Konvertierungen zwischen Float und Datetime durchgeführt werden, damit wird auch relativ schnell sichtlich, dass -0,5 und +0,5 in TDatetime das "selbe" sind.
|