Wie in den Kommentaren der Frage angegeben, können Sie nicht für jedes Land eine einzige Zeitzone festlegen. Es gibt einfach zu viele Fälle von Ländern, die mehrere Zeitzonen haben.
Was Sie können tun ist, um die Liste der Standard IANA/Olson time zones filtern nach unten für diejenigen innerhalb eines bestimmten Landes.
Eine Möglichkeit, dies in C# zu tun ist, mit Noda Time:
IEnumerable<string> zoneIds = TzdbDateTimeZoneSource.Default.ZoneLocations
.Where(x => x.CountryCode == countryCode)
.Select(x => x.ZoneId);
Pass einen zweistelligen ISO-3166-Ländercode, wie "AU"
für Australien. Die Ergebnisse sind:
"Australia/Lord_Howe",
"Australia/Hobart",
"Australia/Currie",
"Australia/Melbourne",
"Australia/Sydney",
"Australia/Broken_Hill",
"Australia/Brisbane",
"Australia/Lindeman",
"Australia/Adelaide",
"Australia/Darwin",
"Australia/Perth",
"Australia/Eucla"
Und wenn Sie aus irgendeinem Grund Windows-Zeitzone Identifikatoren möchten, dass Sie mit dem TimeZoneInfo
Objekt verwenden können, Noda Zeit diejenigen zuordnen können:
var source = TzdbDateTimeZoneSource.Default;
IEnumerable<string> windowsZoneIds = source.ZoneLocations
.Where(x => x.CountryCode == countryCode)
.Select(tz => source.WindowsMapping.MapZones
.FirstOrDefault(x => x.TzdbIds.Contains(
source.CanonicalIdMap.First(y => y.Value == tz.ZoneId).Key)))
.Where(x => x != null)
.Select(x => x.WindowsId)
.Distinct()
Auch hier genannt mit "AU"
für Australien zurück:
"Tasmania Standard Time",
"AUS Eastern Standard Time",
"Cen. Australia Standard Time",
"E. Australia Standard Time",
"AUS Central Standard Time",
"W. Australia Standard Time"
Wenn Sie sich fragen, wie zuverlässig diese Daten vorhanden sind, ist das Land Mapping TZID Datenteil der IANA-Zeitzone Basis selbst, in der zone.tab Datei. Die IANA-Windows-Mapping-Daten stammen von Unicode CLDR supplemental data. Es kommt dem "Offiziellen" nicht näher.
China. Indien. Ich rannte. Brasilien .... –
Was ist eine "Standardzeitzone" ??? Die Zone in der Hauptstadt eines Landes? – elgonzo
Und Australien mit mindestens drei Zeitzonen, und einige Staaten, aber nicht alle, haben Sommerzeit und Indiana in den USA, die mindestens zwei Zeitzonen verwendet. –