是否有可以处理时区转换的JavaScript库(并考虑到DST规则和此类内容)?我知道有类似的问题,但我所看到的没有一个似乎有一个非常适合我的问题的答案。
我想在时区A中创建一个日期,并能够操纵它(添加天,小时和类似的东西),然后将其转换为另一个时区B.必须有很多人需要这个一种功能,所以我想应该有一些我没有找到的库。
答案 0 :(得分:11)
MOMENT - 一个5kb的javascript日期库,用于解析,验证,操作和格式化日期。
矩()区();这是你想要的功能。
您也可以尝试datejs,但我更喜欢时刻库,他们有很好的文档,并保持美味的代码。
答案 1 :(得分:8)
我想你想要这个:
https://github.com/mde/timezone-js
解析器确实需要进行一些调整才能在没有人放在一起的其他库的情况下运行(至少最后我使用它...五个月前?),但是否则这似乎是一个可靠的库。我在两个非常时区敏感的高流量商业网站上使用它并取得了巨大的成功。
它有时候不适合jquery的日期选择器和momentjs(可能还有其他库),所以要准备调整这些库以使用timezoneJS的日期,或者有一个to / from转换函数以便你可以将timezonejs日期转换为“正常”日期,反之亦然,以便输入/输出。
否则,作为一个示例案例,这将采用亚洲/新加坡时区日期并将其转换为America / Los_Angeles日期,同时尊重该年度的夏令时。它使用免费提供的Olson时区文件,并将其解析为实际上非常准确的内容。
希望这能让你走上正确的道路。
- 编辑 -
忘了 - 关于使用它的一些提示。如果你有一组有限的时区,我强烈建议通过告诉解析器只使用那些来解决这些问题 - 然后你不必加载所有这些时区的大文件。另外,我被踢了一次,因为setHours,setMinutes等不遵循setHours(0,0,0,0)的JS“spec”(小时,分钟,秒,毫秒)。这里有一个增强请求:https://github.com/mde/timezone-js/issues/48我认为代码修改难以支持它,所以我希望我们会看到它早晚合并......或者我可能只是自己做;)
答案 2 :(得分:4)
Moment现在有一个专用的库:moment-timezone。 您可以使用online timezone data builder创建自己的tzdata。
就像片刻一样,它的时区对应很轻,其API设计得很好。
答案 3 :(得分:-3)
您可以查看此帖子:How to get user timezone using jquery?
您似乎不需要任何库来转换时区。
- 编辑(对于那些太难以在Stackoverflow上阅读其他问题答案的人)
您可以这样使用standard Date object:
var offset = (new Date).getTimezoneOffset()/60
对于那些懒得阅读规格的人......
这将根据世界时间给你一小时:var hour = (new Date).getUTCHours()
这将根据当地时间给你一小时:var hour = (new Date).getHours()
现在明白了吗?