【问题标题】:Daylight savings time and JavaScript timezone conversions夏令时和 JavaScript 时区转换
【发布时间】:2010-11-26 18:09:23
【问题描述】:

我在使用 JavaScript 时遇到了这个难题。我需要将日期列表从客户的本地时区转换为纽约 (EST) 时区。我正在使用以下功能:

Date.prototype.toNycTime = function() {

    var localTime = this.getTime();
    var localOffset = this.getTimezoneOffset() * 60000;
    var utc = localTime + localOffset;
    this.setTime(utc - 3600000 * 5);

    return this;
};

它工作正常。一个问题是,每次美国有夏令时开关时,我都需要调整 UTC 偏移量。这适用于下一次切换之前的任何日期(最早是 2011 年 3 月 13 日)。但它在切换后的日期不起作用。我不知道任何浏览器中的任何内置 JS 函数都会为我进行转换。

是否有一个好的库可以让我进行一些通用转换?或者任何人都可以提供有关上述代码的任何提示吗?我试图避免在转换的日期/时间中进行编程,并且必须一直查找。

【问题讨论】:

    标签: javascript datetime timezone


    【解决方案1】:

    我正在处理这个确切的问题...世界各地的企业用户,但“企业时间”是 PST/PDT,其中包括夏令时。

    我是如何接近它的: 我实际上为 PacificTime 解析了一个 POSIX 时区字符串,以

    开头
    PST8PDT,M3.2.0/2,M11.1.0/2
    

    并将它们重新格式化为可解析的日期字符串,以便时钟更向前和向后。 使用嵌入在 TZ 字符串中的小时偏移量,我将前进和后退时间转换为纪元时间戳,并使用 if-then 来计算公司时间当前是否为 DST。

    这会产生与 UTC 的偏移量,我可以使用它来将本地“纪元”时间(已经在 UTC 中)转换为概念上的本地时间(实际上是在 UTC 时间中转换,但看起来是本地时间)。

    我必须这样做,因为“flot”在 UTC 中完成所有操作

    【讨论】:

      【解决方案2】:

      http://www.datejs.com/

      Datejs 是一个开源的 JavaScript 日期库。

      全面、简单、隐秘且快速。 Datejs 已经通过了所有的考验,准备好出击了。 Datejs 不只是解析字符串,它会将它们干净地一分为二。

      【讨论】:

      • 处理夏令时失败。
      • 似乎 DST 是 Javascript 中的一个问题。快速的谷歌搜索显示了几个可行的选项,但它们的功能相当长。
      猜你喜欢
      • 2012-10-31
      • 2012-03-21
      • 2018-04-12
      • 2018-04-30
      • 2019-12-15
      • 2018-05-19
      • 2012-04-07
      • 2013-10-13
      • 2011-06-21
      相关资源
      最近更新 更多