代码之家  ›  专栏  ›  技术社区  ›  Daniil

夏令时和JavaScript时区转换

  •  1
  • Daniil  · 技术社区  · 14 年前

    我对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 回复  |  直到 14 年前
        1
  •  -3
  •   drudge    14 年前

    http://www.datejs.com/

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

    全面,但简单,隐蔽和快速。Datejs已经通过了所有的考验,准备罢工。Datejs不只是解析字符串,它将字符串一分为二。

        2
  •  0
  •   ericslaw    14 年前

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

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

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

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

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

    我必须这样做,因为“flot”在UTC中做所有事情

    推荐文章