日期.getTimezoneOffset被反转了吗?

9
我从服务器获得了一个JSON响应,其中包含以秒为单位的UTC Unix时间戳。我将其解析为JavaScript日期,并在图表中使用(以用户所在地区的时间显示)。
显然,我需要将我拥有的(UTC中的)时间戳转换为浏览器所在地区的时间,因此我编写了一个函数,在浏览器的语言环境中创建一个新的Date,调用getTimezoneOffset()方法获取当前语言环境下的“偏移量(以分钟为单位)”,根据MDN的说明,将两者都转换为毫秒,并返回它们的和。现在,我拥有了一个JavaScript友好的Unix时间戳,它以用户所在地区的时间为基准。
但是,实际上并非如此。
事实证明,(new Date()).getTimezoneOffset()在GMT-5时返回正数300,在GMT+2时返回负数120。为什么偏移量被倒置?我本以为偏移量应该与时区的符号匹配——即:我需要减去300分钟才能到达GMT-5,而需要添加120分钟才能到达GMT+2。但实际上,我必须减去getTimezoneOffset返回的值。

请参见此处的说明:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset。这意味着如果本地时区落后于UTC,则偏移量为正,如果本地时区领先于UTC,则偏移量为负。 - Jashwant
如果我实际上点击了该方法...... 扇耳光 - Thomas Jones
1个回答

9

不行。

规范 (§15.9.5.26)表明:

15.9.5.26 Date.prototype.getTimezoneOffset ( )

以分钟为单位返回本地时间和UTC时间之间的差异。

  1. t为此时间值。
  2. 如果t是NaN,则返回NaN。
  3. 返回(t − LocalTime(t)) / msPerMinute

基本上是一个RTFM问题。可能是我喝的咖啡太少了。好吧,至少有文档:D。谢谢。 - Thomas Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接