Hallo,
ich stehe derzeitig etwas auf dem Schlauch wie ich am besten Zeitzonen in der DB hinterlege.
Ich habe erstens auf dem Server einen Task welcher anhand von hinterlegten Uhrzeiten einen Schichtwechsel vornimmt. Dabei werden User von Maschinen abgemeldet und vorangemeldete Mitarbeiter angemeldet. Weiterhin muss ich auf der Website (Intranet) welche der User an der Maschine sieht die derzeitige Uhrzeit anzeigen.
Der Server steht hier in Deutschland und Mitarbeiter können aus Werken rund um den Globus über die Webseite darauf zurückgreifen.
Nun war mein erster Ansatz in der Verwaltung für die Maschinen die Zeitzonen über TimeZoneInfo.GetSystemTimeZones() als Dropdownliste auszugeben und der Admin wählt davon eine aus um diese in der DB zu hinterlegen. Als Wert wollte ich nun die ID verwenden (Bsp: W. Europe Standard Time oder West Asia Standard Time) da ich aufgrund von unterschiedlichen Winter- bzw. Sommerzeiten nicht einfach UTC+1 hinterlegen kann.
Nun könnte es aber meiner Meinung trotzdem 1 Problem geben.
Mit den kommenden Änderungen an Sommer- / Winterzeit kann es schon innerhalb von "W. Europe Standard Time" zu unterschiedlichen Uhrzeiten kommen.
Gibt es hierfür eine sinnvolle Lösung oder muss ich das vielleicht sogar ganz anders angehen?
grüße daniel
Zeiten in Datenbanken sollten prinzipiell immer Neutral abgespeichert werden; also UTC.
Das verhindert Missstände in der Datenbank.
Zeitzonen werden i.d.R. in der Ansicht oder Logik beachtet (dann zB. via ToLocalTime()).
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hi,
@Abt - ich glaube LiMuBai meinte etwas anderes - quasi eine Id für eine Zeitzone in der Datenbank hinterlegen.
Wurde auf StockOverflow schonmal erfragt:
https://stackoverflow.com/questions/11580423/what-is-the-best-way-to-store-timezone-information-in-my-db
Kurzform: TimeZoneInfo.Id pro Maschine in der Datenbank hinterlegen. Die eigentlichen Zeiten in UTC speichern - und nur zur Anzeige mit Hilfe von http://msdn.microsoft.com/en-us/library/system.timezoneinfo.findsystemtimezonebyid.aspx in die "Maschinen"-Zeit umrechnen.
LG
Hallo,
danke euch erstmal für die Antworten.
Derzeitig lege ich auch die ID in der DB ab und berechne dann später die jeweilige Uhrzeit anhand der hinterlegten Zeitzone.
Ich habe nur etwas in die Zukunft gedacht und mir selber ein Problem geschaffen.
Wenn es wirklich soweit kommt das Deutschland zum Beispiel bei Winterzeit bleibt und Dänemark bleibt bei Sommerzeit, kann man das mit den derzeitigen Zeitzonensystem nicht mehr richtig abbilden.
Ich belasse es jetzt aber erstmal bei dem jetzigen System und lasse mich überraschen was die Zukunft bringt.