TimeZoneInfo.GetSystemTimeZones()如何仅选择特定国家/地区代码的条目?

ale*_*exm 3 .net c# asp.net

TimeZoneInfo.GetSystemTimeZones()为您提供所有时区的枚举.问题是如何仅选择特定国家/地区代码的条目.我知道UTC偏移和国家代码,需要能够选择正确的时区值.

Mat*_*ell 6

首先,您会发现由于夏令时变化(可能是其他区域偏差),您不能简单地使用UTC偏移.也许如果您提供的UTC偏移量是当前偏移量,并且您经常轮询它,您可以使用它吗?

无论如何,由于这些原因(我们无疑已经知道),我认为国家代码+ UTC不会很容易:

  1. 时区与国家有多对多的关系

    虽然"东京标准时间"很可能只是日本(或者至少,"JP"和UTC + 9:00可以令人满意地给你东京标准时间),那么"中亚标准时间"呢?当然,如果你有一个每个国家/地区到每个时区的地图,你可能会到达这里的某个地方.

  2. 同一国家/地区的相同UTC偏移量可以产生不同的时区

    例如,在澳大利亚,昆士兰州(布里斯班)不遵守夏令时,而其他东部州则不遵守夏令时.这产生"E. Australia标准时间"和"AUS东部标准时间"作为具有相同国家和UTC偏移的单独时区.

  3. UTC之外通常存在区域差异

    由于它们的相关性较低(我不确定你的用例是多么精确),这些可能不是你所关心的问题,但是在多个时区的边界上存在诸如城镇之类的异常,这对于"平均UTC"或类似因素有所妥协.这方面的一个例子是"中西部标准时间"(http://basementgeographer.blogspot.com/2010/07/central-western-standard-time-time-zone.html).

但是,您可能会发现此兴趣的现有问题(国家/地区到时区映射数据库),从而产生此链接(http://www.twinsun.com/tz/tz-link.htm).假设您有足够的提供信息,您可以使用此数据解析时区,或者至少是最佳猜测(或可能的选项中的查询用户?),如果这仍然有用/可能.

  • 嗯downvoted,不知道为什么?如果此答案不准确,请发表评论. (2认同)