如何获取一个国家的时区信息?
正如其他人所说,这是一个不断变化的目标。我发现这个网站非常有用:
你可以从那里获取UTC偏移量,如果你真的很认真,可以进行一些定期爬取来保持最新。几年前,我使用它在公司门户网页上放置了一系列全球时间,以显示公司各大办事处的时间。在使用时区数据时需要记住以下几点:
时区数据是与地理位置相关的...你要为谁显示时区信息?用户?客户?
时区数据还包括一个有趣的东西叫做夏令时,这意味着你的时区计算将根据计算日期的不同而改变。
时区数据非常频繁地更改。例如,美国在大约两年前改变了夏令时的开始和结束时间...澳大利亚每年都会通过法律确定各州的夏令时开始和结束时间。
我的建议:在时区计算表中设置有效日期...因为这些事情经常发生变化,你需要能够准确地计算任何时间的时间,你需要知道那个时间点的时区标准是什么。
在数据库中存储所有时间为UTC时间。
这可能不是您问题的答案,但这里有一个讨论类似问题的论坛:get timezone from country name asp.net
正如其他人所指出的那样,即使仅基于国家,也很难找到一个好的方法,因为某个特定国家可能存在于多个不同的时区。
由于 ASP.NET 在标签列表中,我猜测你正在编写某种类型的 Web 应用程序。在这种情况下,最好的选择可能是让用户明确指定他们所处的时区。一旦您知道了用户指定的时区,您几乎可以对其进行任何操作。
下一个选项是 John Saunders 在他的帖子中提到的选项,即使用诸如 EarthTools 的服务查找位置并获取时区信息。唯一的问题是您通常需要至少获得城市和国家以过滤结果,并且必须小心,因为同一国家可能有多个同名城市。
最后,如果您愿意接受结果有时可能是错误的,但没有好的方法让用户指示他们所在的位置,您可以尝试进行反向IP查找以猜测用户计算机的位置。然后,您可以将此信息带到上述EarthTools以获取时区信息。但是,真正没有办法保证这是准确的。
最后需要注意的一点是,如果您在企业WAN内部,则可以更轻松地执行反向IP查找,因为您可以访问WAN的布局,并且可以列出给定IP地址将来自哪里的简短列表。