欢迎阅读本周又一个时区问题的一集:
我已经对SO做了一些阅读,试图操纵moment.js和date.js来帮助我,并且自从我开始尝试解决这个问题以来,一般都被一种沮丧的感觉所困扰,所以如果有人能够帮助或指出我在SO上的重复问题,我一直无法找到,这太棒了。
我有一个页面。此页面显示一系列时间,例如:7:28,7:38,7:48。我知道这些是AM / PM。这些时间总是美国/纽约(当夏令时变化时,它们不会改变,因为它们对应的事件总是发生在那个时候,无论DST如何)。我们称他们为时间表。我想强调接下来的时间。
然而,当我尝试确定是否从一个不遵守夏令时的地区的计算机中观察到夏令时时,会发生什么?
根据我的知识,JavaScript只会为当前时区创建Date对象,然后根据该Date对象进行DST的任何确定。
我应该不在乎吗?时代主要仅与生活在美国/纽约的人有关。我只是试图建立一个从另一个时区观看时有意义的应用程序,这样当它在country_without_DST的3AM以及它在美国/纽约的下午2点时,'时间表'突出显示下午2:05的事情即将发生,不是凌晨3点05分。答案 0 :(得分:6)
所有与时间的比较都应该使用您实例的getTime()
。这将返回自UTC纪元以来的毫秒数。 DST无所谓。您将getTime()
值发送到您的服务器。然后,您的客户端脚本会将此值转换回JavaScript Date
对象,如下所示:
mydate = new Date(longmillisFromAnotherTZ);
然后使用mydate
上的任何方法显示您喜欢的日期。这有意义吗?我没有看到问题是怎么回事。我很乐意清除任何事情。
修改强>
只是100%明确......
如果两个不同的客户需要在不同的时区显示彼此的操作,我建议您仅使用(new Date()).getTime()
中的值,然后将其保存到服务器。然后,服务器将此值发送给每个相应的客户端。然后,客户端负责以自己适当的语言环境显示它。
另外,如果你想要一个适合获取时区和偏移量的库,getTimezoneOffset()
已知很好,你应该看看这个库:http://www.pageloom.com/automatic-timezone-detection-with-javascript
答案 1 :(得分:4)
setTimezone("EDT")
支持(至少在文档中)似乎没有对setTimezone("America/New York")
的支持。您要么必须硬编码何时在EDT和EST之间切换的日期(基于当前时间GMT,您可以从用户的计算机获得),或使用第三方API(或在服务器端执行此操作)