Auge: Konvertierung von JSON-Date

Beitrag lesen

Hallo

Nur zur Klarstellung:

In deiner Datenbank hast du Zeiten im Format "2013-07-01 00:00:00.000" - ich sehe da keine Zeitzone! Das bedeutet, wenn du an deinem Datenbank-Rechner die Zeitzone umstellst, dann gibt er dir eine andere Unix-Zeit aus, weil er sich zwangsläufig bei deiner zonenlosen Datenbank-Zeit eine Zeitzone dazudenken muss, um auf die Zeitzonen-behaftete Unix-Zeit zu kommen.

Das Datenbankserverprogramm nimmt normalerweise die auf dem Server (Gerät) geltende Systemzeitzone, um anhand des hier gezeigten zeitzonenlosen Datums die Unix-Zeit zu ermitteln. Ich vermute hier eher die Nichtbeachtung dieses Umstands bei der Weiterverarbeitung der Daten.

Konsequent ist an dieser Stelle, Zeitangaben mit UTC zu speichern, zu lesen und zu ver- und bearbeiten, dies bei allen Operationen zu tun und die Zeitangaben nur bei der Erstellung der Ausgabe in die Zeitzone des Clients (Browser, Desktopprogramm, WhatEver) umzurechnen. Das kann jetzt aber in einem Haufen Arbeit ausarten, weil eventuell das halbe Konzept umgestellt werden müsste.

Unter der Voraussetzung, dass der Datenbankserver weiß, in welcher Zeitzone er sich befindet und es sich hier um einen MS-SQL-Server handelt [1] und es um einen oder mehrere Server geht, die alle in der selben Zeitzone arbeiten, ist es wahrscheinlich am einfachsten, den Server beim auslesen einer Tabellenzeile anzuweisen, den Datumswert von sich aus in einen Unix-Zeitstempel umzurechnen, statt dies einer weiterverarbeitenden Programmiersprache (hier C#) zu überlassen. Falls es sich um MS SQL handeln sollte, liefert diese Stackoverflow-Frage Lösungsansätze.

Bei der Weiterverarbeitung muss man nun „nur noch“ darauf achten, alle Zeitberechnungen explizit in der Zeitzone GMT/UTC durchzuführen und erst bei der Ausgabe die Ergebnisse in die Zeitzone des Clients umzurechnen.

Tschö, Auge

--
Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
Terry Pratchett, „Gevatter Tod“

  1. Ich vermute wegen der hier gezeigten Zeitangaben mit Tausendstelsekunden einen MS-SQL-Server. ↩︎