如何计算特定时区的特定时间是否受到使用JavaScript的夏令时的影响?

时间:2012-05-02 04:07:37

标签: javascript timezone dst

我知道new Date().getTimezoneOffset()说明了本地用户的时区&夏令时,但是如何计算当前在蒂姆布克图当地的当地时间?

3 个答案:

答案 0 :(得分:3)

JavaScript没有内置于该语言的时区数据库(通过阅读the spec可以看到)。相反,它只有“本地时间”和“UTC时间”的概念,只有一个本地时区。

可能有一个用于获取时区数据库的浏览器API,但我从未听说过它。有一些第三方项目与这些数据库连接;快速搜索出现timezone-js

答案 1 :(得分:1)

我怀疑是否有任何算法可以满足您的需求。世界各国经常选择不遵守标准时区规则。更糟糕的是,夏令时的转换日期不同。

我可以考虑检查3个来源:

Jeppesen是波音的子公司,是全球航空导航信息的主要民用供应商。我刚刚查看了我的旧Jeppesen手册,我在13年前退休时停止了每周更新。它给出了世界上所有主要机场的时区以及DST变化的日期。转到here获取联系信息。我怀疑到现在它可以方便地以电子方式获得,但Jeppesen并没有免费提供任何东西。

国际民航组织,国际民用航空组织(我认为是联合国的一部分)我认为应该保留这些信息,但我对DST数据不太确定。我相信他们的数据可以免费或象征性收费。

国际航空运输协会IATA也可能会保留这些数据。

我认为最后两个组织可能会对一个带有该数据的URL的简单请求作出积极回应,如果他们知道一个。

此外,如果可以获得任何航班调度员在国际航班上的工作,他们必须提供这些信息。

另外,请检查this以及其他您是否会查看Google"航空公司时区和dst数据。"

答案 2 :(得分:-1)

简单的部分是时区。您可以通过从日期减去时区* 60 * 60秒,然后将新时区* 60 * 60添加到日期来找到默认(+0)时区。

然后,只需要用你想要的时间来制作:

d = new Date(year, month, day, hours, minutes, seconds, milliseconds)