2009-07-13 16 views
3

Gibt es eine Möglichkeit, die TimeZone einer .NET-Anwendung auf einen anderen Wert als die TimeZone des Betriebssystems zu setzen?Festlegen/Ändern einer Zeitzone der .NET-Anwendung

Zum Beispiel verwende ich meine Anwendung auf einem Betriebssystem mit Central Standard Time, und ich möchte, dass die App sich so verhält, als wäre sie in Eastern Standard Time, ohne alle DateTimes in meiner Anwendung manuell konvertieren zu müssen Methode wie TimeZoneInfo.ConvertTimeBySystemTimeZoneId().

Antwort

5

Nein, ich glaube nicht, dass es irgendeinen Weg gibt, dies zu tun. Es ist nicht so, dass die Zeitzone wie die Kultur pro Thread festgelegt wird. Zum Beispiel glaube ich, dass DateTime.ToLocalTime immer verwenden Sie die Systemzeitzone

Allerdings würde ich nicht TimeZoneInfo.ConvertTimeBySystemTimeZoneId überall verwenden. Ich würde eine Eigenschaft des Typs TimeZoneInfo verfügbar machen, die die entsprechende Zeitzone darstellt - oder eine Hilfsklasse einrichten, um sie an die gewünschte Stelle zu konvertieren.

Je nach App können Sie möglicherweise feststellen, dass Sie, wenn Sie die richtigen Punkte für die Konvertierung der Daten (ist nicht immer ein Fall von nur in UTC abgesehen von der UI-Ebene) Sie müssen nicht so viele Conversions durchführen, wie Sie erwarten würden.

+0

Wir haben die TimeZoneInfo.ConvertTimeBySystemTimeZoneId zu einer unserer DateTime-Hilfsklassen abstrahiert, sodass wir die "Eastern Standard Time" -Konstante nicht überall in unserem Code verfügbar machen mussten –

Verwandte Themen