TimeZoneInfo.GetSystemTimeZones()为您提供所有时区的枚举。问题是如何仅选择特定国家/地区代码的条目。我知道UTC偏移和国家代码,需要能够选择正确的时区值。
答案 0 :(得分:6)
首先,您会发现由于夏令时变化(可能是其他区域偏差),您不能简单地使用UTC偏移。也许如果您提供的UTC偏移量是当前偏移量,并且您经常轮询它,您可以使用它吗?
无论如何,由于这些原因(你无疑已经知道),我认为国家代码+ UTC并不容易:
时区与国家/地区有多对多的关系
虽然“东京标准时间”很可能只是日本(或者至少,“JP”和UTC + 9:00可以令人满意地给你东京标准时间),那么“中亚标准时间”呢?当然,如果你有一个每个国家/地区到每个时区的地图,你可能会到达这里的某个地方。
同一国家/地区的同一UTC偏移可以产生不同的时区
例如,在澳大利亚,昆士兰州(布里斯班)不遵守夏令时,而其他东部州则不遵守夏令时。这会产生“E. Australia标准时间”和“AUS东部标准时间”作为具有相同国家和UTC偏移的单独时区。
UTC之后通常会出现区域差异
由于它们的相关性较低(我不确定你的用例是多么精确),这些可能不是你关心的问题,但是在多个时区的边界上存在诸如城镇之类的异常,这对于“平均UTC”而言是妥协的“或类似的。一个例子是“中西部标准时间”(http://basementgeographer.blogspot.com/2010/07/central-western-standard-time-time-zone.html)。
但是,您可能会发现这个感兴趣的现有问题(Country to Timezone mapping database),从而产生此链接(http://www.twinsun.com/tz/tz-link.htm)。假设您有足够的提供信息,您可以使用此数据解析时区,或者至少是最佳猜测(或可能选项中的查询用户?),如果这仍然有用/可能。
答案 1 :(得分:0)
Linq魔法怎么样?
var zones = from tz in TimeZoneInfo.GetSystemTimeZones() where tz.Id = "xxx" select tz;
将“xxx”替换为您想要的时区......:)