Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#18

AW: Timestamp Unix in TDateTime Anzeigen

  Alt 4. Mär 2013, 19:34
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!!)
  Mit Zitat antworten Zitat