如何获取国家的时区信息?

4

如何获取一个国家的时区信息?


2
如果一个国家有多个时区怎么办? - Curt Hagenlocher
1
起初,你需要的不仅仅是国家名称。美国有六个时区,http://www.timetemperature.com/tzus/time_zone.shtml,其他大型国家也类似地使用多个时区。还有夏令时观察的问题需要考虑。 - Mark Pim
6个回答

2

1

正如其他人所说,这是一个不断变化的目标。我发现这个网站非常有用:

http://www.timeanddate.com/worldclock/

你可以从那里获取UTC偏移量,如果你真的很认真,可以进行一些定期爬取来保持最新。几年前,我使用它在公司门户网页上放置了一系列全球时间,以显示公司各大办事处的时间。

1

在使用时区数据时需要记住以下几点:

  1. 时区数据是与地理位置相关的...你要为谁显示时区信息?用户?客户?

  2. 时区数据还包括一个有趣的东西叫做夏令时,这意味着你的时区计算将根据计算日期的不同而改变。

    1. 在六月份计算费城的时间与在十二月份计算的时间是不同的。
    2. 并非所有市政当局都遵守夏令时...
  3. 时区数据非常频繁地更改。例如,美国在大约两年前改变了夏令时的开始和结束时间...澳大利亚每年都会通过法律确定各州的夏令时开始和结束时间。

我的建议:在时区计算表中设置有效日期...因为这些事情经常发生变化,你需要能够准确地计算任何时间的时间,你需要知道那个时间点的时区标准是什么。

在数据库中存储所有时间为UTC时间。


0

谢谢提供链接,但这不是我的答案。我想要有关时区的服务器端内容。 - Jalpesh Vadgama

0

这个网站包含所有通常的时区数据链接。tz数据库是一个很好的查询地点。通常来说,您需要知道所在国家的某个位置,而不仅仅是国家。


0

正如其他人所指出的那样,即使仅基于国家,也很难找到一个好的方法,因为某个特定国家可能存在于多个不同的时区。

由于 ASP.NET 在标签列表中,我猜测你正在编写某种类型的 Web 应用程序。在这种情况下,最好的选择可能是让用户明确指定他们所处的时区。一旦您知道了用户指定的时区,您几乎可以对其进行任何操作。

下一个选项是 John Saunders 在他的帖子中提到的选项,即使用诸如 EarthTools 的服务查找位置并获取时区信息。唯一的问题是您通常需要至少获得城市和国家以过滤结果,并且必须小心,因为同一国家可能有多个同名城市。

最后,如果您愿意接受结果有时可能是错误的,但没有好的方法让用户指示他们所在的位置,您可以尝试进行反向IP查找以猜测用户计算机的位置。然后,您可以将此信息带到上述EarthTools以获取时区信息。但是,真正没有办法保证这是准确的。

最后需要注意的一点是,如果您在企业WAN内部,则可以更轻松地执行反向IP查找,因为您可以访问WAN的布局,并且可以列出给定IP地址将来自哪里的简短列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接