0

我知道这new Date().getTimezoneOffset()说明了本地用户的时区和 DST,但是如何计算未来任意时间的当前本地时间?

4

3 回答 3

3

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

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

于 2012-05-02T05:05:33.240 回答
1

我怀疑是否有任何算法可以为您提供所需的东西。世界各国经常选择不遵循标准时区规则。更糟糕的是,夏令时的转换日期不同。

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

Jeppesen 是波音的子公司,是全球航空导航信息的主要民用供应商。我刚刚查看了旧的 Jeppesen 手册,当我 13 年前退休时,我不再获得每周更新。它提供了世界上所有主要机场的时区以及其 DST 更改的日期。去这里获取联系信息。我怀疑现在它可以通过电子方式方便地获得,但 Jeppesen 并没有免费赠送任何东西。

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

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

我认为最后两个组织可能会积极响应一个包含该数据的 URL 的简单请求,如果他们知道的话。

此外,如果可以找到任何从事国际航班的航空公司调度员,他们就必须提供该信息。

此外,如果您在 Google 上搜索“航空公司时区和夏令时数据” ,请检查此内容和其他内容。

于 2012-05-02T06:08:41.527 回答
-1

最简单的部分是考虑时区。您只需从日期中减去 timezone*60*60 秒,然后将新的 timezone*60*60 添加到日期即可找到默认 (+0) 时区。

然后,只需使用您想要的时间:

d = new Date(year, month, day, hours, minutes, seconds, milliseconds)
于 2012-05-02T04:09:39.480 回答