2017-12-15 5 views
3

In meinem lokalen Computer ich versuche, die Offset-Werte von IANA Zeitzone für den Zugriff auf die converter wie folgt verwendet wird,Warum fehlen einige Zeitzoneninformationen in Windows 10?

foreach (var timeZone in TZConvert.KnownIanaTimeZoneNames) 
{ 
    var tzi = TZConvert.GetTimeZoneInfo(timeZone.ToString()); 
    TimeSpan offset = tzi.GetUtcOffset(DateTime.Now); 
    ....... 
} 

die Linie TZConvert.GetTimeZoneInfo(timeZone.ToString()) manchmal einen Fehler aus,

System.TimeZoneNotFoundException: 'The time zone ID 'Sudan Standard Time' was not found on the local computer.' 

sagen, wenn ich versuche, das gleiche auf Power Shell mit dem gleichen Befehl,

PS C: \ Users \ Sajeet Harans> [System.TimeZoneInfo] :: FindSystemTimeZoneById ("Aleutian Standard- Time") Exception "FindSystemTimeZoneById" mit "1" Argumente Aufruf (e): „Die Zeitzone ID 'Aleuten Standard Time' wurde nicht auf dem gefunden lokaler Computer. " Bei Zeile: 1 Zeichen: 1 + [System.TimeZoneInfo] :: FindSystemTimeZoneById ("Aleutian Standard Time ... + ~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: TimeZoneNotFoundException

warum einige Zeitzoneninformationen fehlen, wie kann ich es beheben

+0

In Powershell gibt es weder 'Sudan' in' (Get-TimeZone -ListAvailable) .Id' noch in '([System.TimeZoneInfo] :: GetSystemTimeZones()). StandardName' Ausgabe. Wählen Sie eines von '(Get-Time-Zone -ListAvailable | Where-Object {$ _ BaseUtcOffset -eq '02: 00:.. 00' -und -keine $ _ SupportsDaylightSavingTime})'; Sie könnten eine ['TimeZoneInfo.CreateCustomTimeZone' Methode] (https: // msdn.microsoft.com/en-us/library/system.timezoneinfo%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396) Variante. – JosefZ

Antwort

1

Die besondere Zeitzone, "Sudan Standard Time"war nurreleased by Microsoft on December 12, 2017 es?. ist wahrscheinlich, dass der Computer, auf dem der Code ausgeführt wird, noch nicht h Habe dieses Update. Siehe den Abschnitt "So erhalten Sie dieses Update" unter the support document. (Im Wesentlichen Windows Update ausführen).

Soweit "Aleutian Standard Time", war, dass released in June 2016. Also, wenn der Computer das nicht hat, dann ist es ganz mit Updates.

Im Allgemeinen sind die Zeitzonen ein bewegliches Ziel, weil die Regierungen der Welt auf ihre Standard-Änderungen Offset- und DST Politik. Um genaue lokale Zeit zu haben, ist es wichtig, mit Updates auf dem Laufenden zu bleiben.

Meine TimeZoneConverter Bibliothek, die Sie verwenden, macht die Annahme, dass der Computer aktuell ist. Ich pushen Updates, da Zeitzonenänderungen von Microsoft und IANA veröffentlicht werden, aber ich versuche nicht, mit einem bestimmten Computer übereinzustimmen, der die Zeitzonen installiert hat oder nicht.

Wenn Sie versuchen, alle Zeitzonen auf dem Computer aufzulisten, verwenden Sie besser die integrierte TimeZoneInfo.GetSystemTimeZones()-Methode und verwenden Sie dann die .Id-Eigenschaft von jedem.

Auch in den meisten Fällen wollen Sie nicht .StandardName verwenden, da die .StandardName, .DaylightName und .DisplayName Eigenschaften lokalisierte für die Sprache auf dem Betriebssystem installiert sind. Manchmal entspricht die .Id der .StandardName, aber das ist nicht garantiert - auch in Englisch.

Verwandte Themen