夏令时和JavaScript时区转换

夏令时和JavaScript时区转换,javascript,datetime,timezone,Javascript,Datetime,Timezone,我对JavaScript有这样的两难选择。我需要将一个日期列表从客户的本地时区转换为纽约(EST)时区。我正在使用下面的函数: Date.prototype.toNycTime = function() { var localTime = this.getTime(); var localOffset = this.getTimezoneOffset() * 60000; var utc = localTime + localOffset; this.setTi

我对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函数可以为我进行转换

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

Datejs是一个开源JavaScript日期库

全面,但简单,隐蔽和快速。Datejs已经通过了所有的考验,准备发动攻击。Datejs不仅仅解析字符串,它还将字符串一分为二


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

我是如何接近它的: 实际上,我从开始解析POSIX时区字符串

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

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


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

它无法处理夏令时。似乎DST在Javascript中是一个问题。快速的谷歌搜索显示了几个可行的选项,但它们是相当长的函数。