2010-11-26 260 views
1

我有这种JavaScript困境。我需要将客户当地时区的日期列表转换为纽约时区(EST)时区。我正在使用下面的功能:夏令时和JavaScript时区转换

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

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

回答

-3

http://www.datejs.com/

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

综合,但简单,隐身和快速。 Datejs已通过所有审判并准备罢工。 Datejs不仅解析字符串,而且将它们切成两半。

+3

它无法处理夏令时。 – 2011-03-04 14:07:36

0

我正在处理这个确切的问题......全世界的企业用户,但'企业时间'是包括夏令时在内的PST/PDT。

如何我已经接近它: 我其实解析为一个PacificTime POSIX时区字符串开始

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

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

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

我必须这样做,因为'flot'可以完成UTC中的所有内容