微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript,时区和夏令时

欢迎来到本周的又一个时区问题:

我已经做了很多关于SO的阅读,试图操纵moment.js和date.js来帮助我,并且自从我开始尝试解决这个问题以来,一般都被一种沮丧的感觉所困扰,所以如果有人可以提供帮助或指出我在SO上的重复问题,我一直无法找到,那真是太棒了.

我有一个页面.此页面显示一系列时间,例如:7:28,7:38,7:48.我知道这些是AM / PM.这些时间总是美国/纽约(当夏令时变化时它们不会改变,因为它们对应的事件总是发生在那个时候,无论DST如何).我们称他们为时间表.我想强调接下来的时间.

>对于生活在美国/纽约的人来说,这是微不足道的.
>这对于生活在美国/洛杉矶的人来说并不太可怕(假设我的逻辑有效).

>我可以将美国/洛杉矶的计算机当前时间转换为UTC,然后确定美国/洛杉矶目前是否正在观察夏令时,并确定美国/纽约是否应该是-0400或-0500,到UTC,并进行比较.这有点伤害,因为你仍然总是处理美国/洛杉矶的日期而不是实际更改Date对象的时区,但我有一个可靠的方法来回退(或转发)UTC的小时数时间.

但是,当我试图确定是否从一个没有遵守夏令时的地区的计算机中观察到夏令时时,会发生什么?

根据我的知识,JavaScript只会为当前时区创建Date对象,然后根据Date对象进行DST的任何确定.

我应该不在乎吗?时代主要仅与生活在美国/纽约的人有关.我只是试图建立一个从另一个时区观看时有意义的应用程序,这样当它在country_without_DST的3AM以及它在美国/纽约的下午2点时,’时间表’突出显示下午2:05的事情即将发生,不是凌晨3:05的事情.

解决方法

所有与时间的比较都应该使用实例的getTime()来完成.这将返回自UTC纪元以来的毫秒数.夏令时无所谓.您将getTime()值发送到您的服务器.然后,您的客户端脚本将此值转换回JavaScript Date对象,如下所示:
mydate = new Date(longmillisFromAnotherTZ);

然后在mydate上使用任何方法显示您喜欢的日期.这有意义吗?我没有看到有什么问题.我很乐意清除任何事情.

编辑:

只是要100%明确……

如果两个不同的客户端需要在不同的时区显示彼此的操作,我建议您只使用(new Date()).getTime()中的值,然后将其保存到服务器.然后,服务器将此值发送给每个相应的客户端.然后,客户端负责以自己适当的语言环境显示它.

此外,如果你想要一个适合获取时区和偏移量的库,getTimezoneOffset()已知很好,你应该看看这个库:http://www.pageloom.com/automatic-timezone-detection-with-javascript

原文地址:https://www.jb51.cc/js/150752.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐