欢迎来到本周的 Yet Another Time Zone Question 集:
我已经做了很多关于SO的阅读,试图操纵moment.js和date.js来帮助我,并且自从我开始尝试解决这个问题以来,一般都被一种沮丧的感觉所困扰,所以如果有人可以提供帮助或指出我在SO上的重复问题,我一直无法找到,那真是太棒了 .
我有一个页面 . 此页面显示一系列时间,例如:7:28,7:38,7:48 . 我知道这些是AM / PM . 这些时间总是美国/纽约(当夏令时变化时它们不会改变,因为它们对应的事件总是发生在那个时候,无论DST如何) . 我们称他们为时间表 . 我想强调接下来的时间 .
-
对于生活在美国/纽约的人来说,这是微不足道的 .
-
这对生活在美国/洛杉矶的人来说并不太可怕(假设我的逻辑有效) .
-
我可以在美国/洛杉矶拍摄计算机的当前时间,将其转换为UTC,然后确定美国/洛杉矶目前是否正在观察夏令时,并确定美国/纽约是否应该是-0400或-0500,到UTC,并进行比较 . 这有点伤害,因为你仍然总是处理美国/洛杉矶的日期而不是实际更改Date对象的时区,但我有一个可靠的方法来回退(或转发)UTC的小时数时间 .
但是,当我试图确定是否观察到夏令时时会发生什么 from a computer in a region that does not observe daylight savings time at all?
根据我的知识,JavaScript只会为当前时区创建Date对象,然后根据Date对象进行DST的任何确定 .
我应该不在乎吗?时代主要仅与生活在美国/纽约的人有关 . 我只是试图 Build 一个从另一个时区观看时有意义的应用程序,这样当它在country_without_DST的3AM以及它在美国/纽约的下午2点时,'时间表'突出显示下午2:05的事情即将发生,不是凌晨3:05的事情 .
2 回答
所有与时间的比较都应该使用您实例的
getTime()
来完成 . 这将返回自UTC纪元以来的毫秒数 . 夏令时无所谓 . 您将getTime()
值发送到您的服务器 . 然后,您的客户端脚本会将此值转换回JavaScriptDate
对象,如下所示:然后使用
mydate
上的任何方法显示你如何'd like. Does this make sense? I'未能看到如何清除任何东西的日期 .Edit:
只是要100%明确......
如果两个不同的客户端需要在不同的时区显示彼此的操作,我建议您只使用
(new Date()).getTime()
中的值,然后将其保存到服务器 . 然后,服务器将此值发送给每个相应的客户端 . 然后,客户端负责以自己适当的语言环境显示它 .此外,如果你想要一个适合获取时区和偏移量的库,
getTimezoneOffset()
已知很好,你应该看看这个库:http://www.pageloom.com/automatic-timezone-detection-with-javascript啊,我想我终于看到了你在说什么 . 您想根据's on the user'计算机的时间来说“纽约当前时间是 _ ”,虽然对于
setTimezone("EDT")
有支持(至少在文档中),但似乎不支持setTimezone("America/New York")
. 你'll either have to hard code the dates for when to switch between EDT and EST (based on current time GMT, which you can get from the user'的计算机),或使用第三方API(或在服务器端执行此操作) .