Also ich sehe das so:
Es gibt 2 Zeitsysteme: Unix (Sekunden seit dem 1. Januar 1970 (00:00 Uhr)) und Delphi (Anzahl Tage seit 31.12.1899).
Und es gibt sicher die Möglichkeit beide Zeitsysteme ineinander umzurechnen (wenn man >= 1970 bleibt).
Also muss man im ersten Schritt sich die beiden Umrechnungsfunktionen besorgen und
überprüfen!
Am Besten man verwendet Funktionen aus der
RTL/
VCL und wenn es die dort noch nicht gibt,
muss man sich eben was besorgen (
Jedi Code Library) oder selbst bauen.
Die Funktionen müssen umkehrbar sein, was man leicht testen kann:
Delphi-Quellcode:
heute := SysUtils.Date;
if Int(heute) <> Int(UnixToDateTime(DateTimeToUnix(heute))) then
ShowMessage('Houston wir haben ein Problem');
if 9876000 <> DateTimeToUnix(UnixToDateTime(9876000)) then
ShowMessage('Houston wir haben noch''n ein Problem');
ShowMessage(DateTimeToStr(UnixToDateTime(0))); // muss logischerweise der 1.1.1970 sein
Wenn wir jetzt wissen, dass die Funktionen korrekt sind, dann gibt es nur noch wenige Fehlermöglichkeiten:
* Werte in Datenbank sind falsch oder nicht im Unix-Format
* Werte werden falsch ausgelesen (aufbassen Int64)
* Code ist falsch und Alterauge hat den
Tomaten-Auf-Den-Augen-Effekt vergessen
(und wenn mich nicht alles täuscht liegt genau hier der Fehler. Der Compiler gibt Warnungen aus wenn Variablen nicht initialisiert wurden!!)