JavaScript,时区和夏令时

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

我已经完成了一些关于SO的阅读,试图操纵moment.js和date.js来帮助我,并且自从我开始尝试解决这个问题以来,一直受到挫折感的困扰,所以如果有人能够帮助或者指出我在重复的问题上,我只是无法找到,那真棒。


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

  • 这对生活在美国/纽约的人来说是微不足道的。
  • 这对生活在美国/洛杉矶的人来说并不太可怕(假设我的逻辑是有效的)。
  • 我可以将美国/洛杉矶的电脑当前时间转换为UTC,然后确定美国/洛杉矶目前是否在观察DST,并确定美国/纽约应该是-0400还是-0500,应用到UTC,并进行比较。 这有点伤害,因为你仍然总是处理基于美国/洛杉矶的日期,而实际上并没有改变Date对象的时区,但是我有一个可靠的方法来回滚(或转发)UTC时间时间。
  • 然而,当我试图确定夏季时间是否从一个没有遵守夏令时的地区的计算机上观察时会发生什么?

    据我所知,JavaScript将只为当前时区创建Date对象,然后根据该Date对象做任何DST的确定。

    我应该不在乎吗? 无论如何,时间主要只与居住在美国/纽约的人有关。 我只是试图构建一个从另一个时区查看时有意义的应用程序,以便在country_without_DST为3AM,而在美国/纽约为2PM时,“时间表”突出显示下午2:05即将发生并且不是3点05分的事情。


    所有与时间的比较应该使用实例的getTime()完成。 这会返回自UTC时代以来的毫秒数。 DST无关紧要。 您将getTime()值发送到您的服务器。 然后,您的客户端脚本会将此值转换回JavaScript Date对象,如下所示:

    mydate = new Date(longmillisFromAnotherTZ);
    

    然后使用mydate上的任何方法显示你想要的日期。 这有意义吗? 我没有看到有什么问题。 尽管如此,我很乐意澄清一切。

    编辑:

    只是为了100%清楚...

    如果两个不同的客户端需要在不同的时区相互显示他们的行为,我建议您只使用(new Date()).getTime() ,然后将其保存到服务器。 服务器然后将这个值发送给每个相应的客户端。 客户端然后负责显示它在它自己适当的区域设置。

    另外,如果你想要一个能获得时区和偏移量的函数库, getTimezoneOffset()被称为flakey,你应该看看这个函数库:http://www.pageloom.com/automatic-timezone-detection-with- JavaScript的


    啊,我想我终于明白你在说什么了。 你想说的是,“纽约市目前的时间是_ ”是基于用户计算机上的时间,虽然支持(至少在文档中) setTimezone("EDT")但似乎没有支持setTimezone("America/New York") 。 您需要硬编码EDT和EST之间切换的时间(根据您可以从用户计算机获得的GMT当前时间),或者使用第三方API(或者在服务器端执行此操作) 。

    链接地址: http://www.djcxy.com/p/29373.html

    上一篇: JavaScript, time zones, and daylight savings time

    下一篇: Parse a date string into a certain timezone (supporting daylight saving time)