我知道这new Date().getTimezoneOffset()
说明了本地用户的时区和 DST,但是如何计算未来任意时间的当前本地时间?
3 回答
JavaScript 没有内置于语言中的时区数据库(通过阅读规范可以看出)。相反,它只有“本地时间”和“UTC 时间”的概念,只有一个本地时区。
可能有用于获取时区数据库的浏览器 API,但我从未听说过。有一些第三方项目与此类数据库交互;快速搜索出现timezone-js。
我怀疑是否有任何算法可以为您提供所需的东西。世界各国经常选择不遵循标准时区规则。更糟糕的是,夏令时的转换日期不同。
我可以考虑检查 3 个来源:
Jeppesen 是波音的子公司,是全球航空导航信息的主要民用供应商。我刚刚查看了旧的 Jeppesen 手册,当我 13 年前退休时,我不再获得每周更新。它提供了世界上所有主要机场的时区以及其 DST 更改的日期。去这里获取联系信息。我怀疑现在它可以通过电子方式方便地获得,但 Jeppesen 并没有免费赠送任何东西。
国际民航组织、国际民用航空组织(我认为现在是联合国的一部分)我认为会保留这些信息,但我对 DST 数据不太确定。我相信,他们的数据可以免费获得,也可以象征性收费。
国际航空运输协会 IATA 也可能会维护这些数据。
我认为最后两个组织可能会积极响应一个包含该数据的 URL 的简单请求,如果他们知道的话。
此外,如果可以找到任何从事国际航班的航空公司调度员,他们就必须提供该信息。
此外,如果您在 Google 上搜索“航空公司时区和夏令时数据” ,请检查此内容和其他内容。
最简单的部分是考虑时区。您只需从日期中减去 timezone*60*60 秒,然后将新的 timezone*60*60 添加到日期即可找到默认 (+0) 时区。
然后,只需使用您想要的时间:
d = new Date(year, month, day, hours, minutes, seconds, milliseconds)