【问题标题】:Javascript's Date.getTimezoneOffset()Javascript Date.getTimezoneOffset()
【发布时间】:2009-07-28 15:31:01
【问题描述】:

我正在尝试将来自操作系统的 GMT 时间偏移量与来自 Javascript 的 Date.getTimezoneOffset() 的 GMT 时间偏移量进行比较。问题是 windows 给出了一个基于 EST 的偏移量,而 javascript 给出了一个基于 EDT 的偏移量。这两者之间有一个小时的差异。有谁知道如何让 Javascript 像 Windows 一样使用标准时间?谢谢。

【问题讨论】:

  • 您如何从操作系统中检索偏移量?

标签: javascript


【解决方案1】:

请注意,第一个发布的答案仅适用于所有情况的一半,因此平均而言根本不起作用。

已知 1 月 1 日仅在北半球不是夏令时。然而,这只是世界的一半。

var jan = new Date( 2009, 0, 1, 2, 0, 0 ), jul = new Date( 2009, 6, 1, 2, 0, 0 );
var offset = ( jan.getTime() % 24 * 60 * 60 * 1000 ) > 
             ( jul.getTime() % 24 * 60 * 60 * 1000 )
             ?jan.getTimezoneOffset() : jul.getTimezoneOffset();

【讨论】:

  • 并不是说疏远任何群体都可以,但请注意,北方的“半个世界”占世界人口的 90%。
  • @hyperslug - 如果 SquidScareMe 只追求北半球的解决方案,那对他来说没问题。但是,SO应该提供最佳解决方案,Steffen 的解决方案在技术上更正确(最好的正确!)。
  • 为了完成这项工作,我首先获取当前月份,然后在您看到 6(7 月)的地方更改它。
  • @Andrew - 我完全同意,不仅北半球唯一的解决方案对南半球居民来说是一种冒犯,而且知道它会在 10% 的代码中惨遭失败而放弃你的代码是彻头彻尾的草率。全球人口。
  • 比较 jan 和 jul 时不应该 >= 在第二行吗?我是 UTC+1,我得到了 -120 作为偏移量,而不是 -60,因为夏天有 DST 和 UTC+2,这意味着我得到了从 7 月开始的时区偏移量,这是错误的。
【解决方案2】:

为什么不在您知道夏令时无效的日期调用 getTimezoneOffset?

javascript:alert(new Date('1/1/2009').getTimezoneOffset())

这将提供 300(5 小时)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 2016-02-13
    • 2012-05-16
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多