夏令时和JavaScript时区转换

时间:2010-11-26 18:09:24

标签: javascript datetime timezone

我在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函数。

那里有一个好的图书馆可以让我做一些普遍的转换吗?或者任何人都可以提供有关上述代码的任何提示?我试图避免在转换的日期/时间进行编程,并且必须一直查找。

2 个答案:

答案 0 :(得分:0)

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

我是如何接近它的: 我实际上从

开始解析PacificTime的POSIX时区字符串
PST8PDT,M3.2.0/2,M11.1.0/2

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

这产生了一个与UTC的偏移,我可以用来将本地'epoch'时间(已经是UTC)转换为概念本地时间(实际上是以UTC时间转换,但看起来是本地的)。

我必须这样做,因为'flot'用UTC完成所有事情

答案 1 :(得分:-3)

http://www.datejs.com/

  

Datejs是一个开源JavaScript日期库。

     

全面,简单,隐秘,快速。 Datejs已通过所有审判,并准备罢工。 Datejs不只是解析字符串,它将它们完全切成两半。