System.TimeZoneNotFoundException Fehler beim abrufen der datetime-für bestimmte Zeit-zone, in c#
Habe ich eine JSON-Datei, die time_zone
parameter. Es hat Werte wie London, Casablanca, Arizona, Pacific Time (US & Canada)
etc. Auf der Grundlage der time_zone
möchte ich, um die DateTime
Ergebnis, dass die Zeit-zone.
Beispielsweise
Current time = 8/3/2015 4:00:00 PM
If time_zone = Central Time (US & Canada) then result should be 8/3/2015 3:00:00 PM,
If time_zone = Pacific Time (US & Canada) then result should be 8/3/2015 1:00:00 PM,
If time_zone = London then result should be 8/3/2015 9:00:00 PM
und so weiter.
Möchte ich zeigen Sie die aktuelle Uhrzeit sowie die Zeit nach bestimmten Zeitzone.
Versuchte ich folgenden Ansatz, um Zeit für ANGESEHENE Zeit-zone, aber es wirft einen Fehler.
Code: Werke
DateTime timeUtc = DateTime.Now;
TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
var b = TimeZoneInfo.ConvertTime(timeUtc, cstZone);
Fehler : The time zone ID 'Central Time (US & Canada)' was not found on the local computer.
TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Time (US & Canada)");
var b = TimeZoneInfo.ConvertTime(timeUtc , cstZone);
Auch versucht aber der gleiche Fehler,
var c = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(timeUtc, "Central Time (US & Canada)");
Mein Problem ist, time_zone
Werte sind in Central Time (US & Canada), Pacific Time (US & Canada), etc.
- format und ich habe, mit zu arbeiten, wie auch die verschiedenen Zeitzonen, wie London, Casablanca
. Wie behandeln Sie diese Art von Szenarien.
MAPPING
ständige und prüfen, ob alle Schlüssel mit denen in deiner Datei?Die meiste Zeit Zonen entspricht dem link den du geschickt hast.
InformationsquelleAutor CSharper | 2015-08-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt die Zeitzone IDS in der Datei kam Schienen, dann sind Sie im Grunde fragt der Rückseite diese Frage.
Ähnlich zu der Antwort auf diese Frage, wir verwenden die Schienen mapping, zusammen mit CLDR-mappings, um ein Schienen-Zu-Windows-mapping Konstante in C#.
Können Sie nun verwenden, dass mit
TimeZoneInfo
etwa so:Bewusst sein, ein paar Dinge:
Schienen Zuordnungen scheinen relativ fest, aber CLDR Zuordnungen werden gelegentlich aktualisiert. Müssen Sie möglicherweise besuchen Sie diese von Zeit zu Zeit, um sicherzustellen, dass keine neuen Zeitzonen zugeordnet sind, entsprechend.
Den Schienen Zeitzone
"Chatham Is."
können derzeit nicht abgebildet werden, um jede Windows-Zeitzone. (Es ist keine Zeitzone definiert, die für die Chatham-Inseln in Windows.)Wenn Sie wollten, um genauer zu sein und Unterstützung für alle Zonen, können Sie gehen von Schienen IANA/TZDB Zeitzonen statt an Windows-Zeitzonen. Sie könnte dann mit Noda Zeit mit seiner nativen TZDB unterstützen. Dies würde auch zu entfernen die Notwendigkeit der Verwendung von CLDR-Zuordnungen.
InformationsquelleAutor Matt Johnson
Habe ich nicht dieses Problem gelöst, aber ich habe eine Arbeit um für dieses Szenario mit https://stackoverflow.com/a/6144229/7670060. Hoffe, das wird helfen.
Schritt1:
Finden Sie die Liste der Zeitzone auf Ihrem computer.
var timeZones = TimeZoneInfo.GetSystemTimeZones();
Schritt 2:
Schritt 3:
InformationsquelleAutor Riyas