将UTC日期时间转换为本地日期时间

从服务器中,我得到这种格式的日期时间变量: 6/29/2011 4:52:48 PM ,它是UTC时间。 我想使用JavaScript将其转换为当前用户的浏览器时间。

如何使用JavaScript或jQuery完成这项工作?


在将其转换为javascript中的日期之前,将“UTC”附加到字符串:

var date = new Date('6/29/2011 4:52:48 PM UTC');
date.toString() // "Wed Jun 29 2011 09:52:48 GMT-0700 (PDT)"

这是一个通用的解决方案:

function convertUTCDateToLocalDate(date) {
    var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000);

    var offset = date.getTimezoneOffset() / 60;
    var hours = date.getHours();

    newDate.setHours(hours - offset);

    return newDate;   
}

用法:

var date = convertUTCDateToLocalDate(new Date(date_string_you_received));

根据客户端本地设置显示日期:

date.toLocaleString();

在我看来,服务器应该总是在一般情况下以标准化的ISO 8601格式返回日期时间。

更多信息在这里:

  • http://www.w3.org/TR/NOTE-datetime
  • https://en.wikipedia.org/wiki/ISO_8601
  • 在这种情况下,服务器将返回'2011-06-29T16:52:48.000Z' ,它将直接馈入JS Date对象。

    var utcDate = '2011-06-29T16:52:48.000Z';  // ISO-8601 formatted date returned from server
    var localDate = new Date(utcDate);
    

    localDate将在当地时间正确,在我的情况下是两小时后(DK时间)。

    只要符合服务器期望的格式,您实际上不必执行所有这些解析,只会使问题复杂化。

    链接地址: http://www.djcxy.com/p/18753.html

    上一篇: Convert UTC date time to local date time

    下一篇: How do you convert a JavaScript date to UTC?