Einzelnen Beitrag anzeigen

SebastianZ

Registriert seit: 23. Jul 2009
89 Beiträge
 
Delphi 11 Alexandria
 
#1

TDateTime Rechnungen über 0 ('30.12.1899 00:00')

  Alt 5. Mär 2015, 11: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.
Angehängte Dateien
Dateityp: zip encodetest.zip (2,7 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat