使用javascript在本地时区转换日期

时间:2012-12-26 12:26:29

标签: javascript timezone date-format

在我的JavaScript图层中,我收到一个{strong> UTC 格式的timestamp - 我需要将其转换为本地时区。我知道可以在Java端使用DateFormat转换时区,但我正在寻找一种仅使用JavaScript的可靠方法。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

使用 getTimezoneOffset()

  1. 获取本地UTC偏移并转换为msec

    localOffset = d.getTimezoneOffset() * 60000;
    

    请注意,getTimezoneOffset()的负返回值表示当前位置在UTC之前,而正值表示该位置在UTC之后。

  2. 通过将本地时区偏移量添加到本地时间来获取当前UTC时间。 (您将从getTime()获得localTime

    // obtain UTC time in msec
    utc = localTime + localOffset;
    
  3. 获得UTC时间后,以小时为单位获取目的地城市的UTC偏移量,将其转换为毫秒数并将其添加到UTC时间。

    // obtain and add destination's UTC time offset
    // for example, Mumbai(India) 
    // which is UTC + 5.5 hours
    offset = 5.5;   
    mumbai = utc + (3600000*offset);
    

    此时,变量mumbai包含印度孟买市的当地时间。这个本地时间表示为自1970年1月1日以来的毫秒数。显然,这不是很易读,所以我们需要进行更多的计算。

  4. 通过用它初始化一个新的Date()对象,并调用对象的toLocaleString()方法,将上一步计算的时间值更改为人类可读的日期/时间字符串。

    // convert msec value to date string
    nd = new Date(mumbai); 
    document.writeln("Mumbai time is " + nd.toLocaleString() + "<br>");
    
  5. 你已经完成了!