7 Stimmen

TimeZoneInfo und Ländercodes

Ich bin auf der Suche nach einer Funktion mit einer Signatur etwa wie die folgende zu implementieren:

bool IsTimeZoneValid(string countryCode, DateTime localTime);

Es geht darum festzustellen, ob das Land eine Zeitzone hat, in der die Ortszeit gültig ist, wenn wir die aktuelle UTC-Zeit kennen. Nehmen wir einmal an, dass "gültig" bedeutet, dass die in UTC umgerechnete Zeit +/- 30 Minuten von der Zeit abweicht, die wir glauben.

Nehmen wir zum Beispiel an, es ist der 03/08/2009 18:25:00 UTC, dann sollte der folgende Methodenaufruf für Australien zurückgegeben werden true da dies eine gültige Zeit in der Zone "Eastern Standard Time" ist:

IsTimeZoneValid("AU", DateTime.Parse("04/08/2009 03:25:00"));

Der folgende Anruf für Frankreich sollte jedoch fehlschlagen, da dies keine gültige Zeit in der französischen Zeitzone ist.

IsTimeZoneValid("FR", DateTime.Parse("04/08/2009 03:25:00"));

Diese muss genau sein und die Sommerzeit usw. berücksichtigen.

.NET 3.5 enthält die neue TimeZoneInfo Klasse, die einen Großteil der Konvertierung für mich übernehmen kann, wenn ich weiß, welche Zeitzonen es in einem bestimmten Land gibt, aber ich kann anscheinend keine eingebaute Suchfunktion dafür finden. Übersehe ich etwas, oder muss ich manuell eine Tabelle mit den Zuordnungen zwischen Land und Zeitzone erstellen?

Um es noch einmal zu wiederholen, meine Frage lautet: Wie kann ich mit einem Ländercode eine Liste von Zeitzonen erhalten? Oder gibt es eine andere Möglichkeit, dies zu tun, die ich übersehen habe?

5voto

Standardmäßig fügt Windows nur Zeitzoneninformationen für Ihre lokale Zeitzone hinzu, was die Ursache für das Problem sein kann.

Diese Klasse funktioniert nur für die lokale Zeitzone und alle vordefinierten Zeitzonen. Wenn Sie sie für andere Zeitzonen verwenden möchten, müssen Sie die Registrierungseinstellungen für alle benötigten Zeitzonen auf dem Computer hinzufügen oder mit CreateCustomTimeZone benutzerdefinierte Zeitzoneninformationen erstellen.

http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx?ppud=4 http://msdn.microsoft.com/en-us/library/bb384268.aspx

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X