jQuery:如何将UTC服务器时间转换为Web浏览器的本地时间?

时间:2012-05-13 18:23:17

标签: javascript jquery mongodb

我有一个服务器时间(美国的东部成本),我想转换为用户的本地时间,无论他的位置如何。我不知道用户的时区。

以下是MongoDB中存储的样本日期(UTC时间):

ISODate("2012-05-03T09:40:34.764Z") which becomes 5/3/2012 5:40:34 AM

我想将其转换为用户的本地时间。

是否有插件我可以看一下或有人用插件完成它?

我的代码无效:

var svrDate = new Date('5/3/2012 5:40:34 AM');
var tzo = ((new Date()).getTimezoneOffset() / 60) * (-1);
var userTime = new Date(svrDate.setHours(svrDate.getHours() + tzo)).toLocaleString());

3 个答案:

答案 0 :(得分:4)

简单:

var d = new Date("2012-05-03T09:40:34.764Z");
alert(d);

就我而言,这会打印:

Thu May 03 2012 02:40:34 GMT-0700 (PDT)

因为我在加利福尼亚。

字符串末尾的Z表示日期字符串是UTC。 JavaScript已经知道如何处理它。如果你想要本地时间,只需调用通常的getTime(),getMonth(),getDay()方法。如果你想要UTC时间,请调用它们的UTC变体:getUTCTime(),getUTCMonth(),getUTCDay()等。

答案 1 :(得分:1)

查看https://github.com/GregDThomas/jquery-localtime的jquery-localtime插件 - 将UTC时间转换为当地时间。

答案 2 :(得分:1)

`//Covert datetime by GMT offset 
//If toUTC is true then return UTC time other wise return local time
function convertLocalDateToUTCDate(date, toUTC) {
    date = new Date(date);
    //Local time converted to UTC
    console.log("Time :" + date);
    var localOffset = date.getTimezoneOffset() * 60000;
    var localTime = date.getTime();
    if (toUTC)
    {
        date = localTime + localOffset;
    }
    else
    {
        date = localTime - localOffset;
    }
    date = new Date(date);
    console.log("Converted time" + date);
    return date;
}
`