1

我有一个服务器时间(美国东部成本),无论他身在何处,我都想将其转换为用户的当地时间。我不知道用户的时区。

这是存储在 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());
4

3 回答 3

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() 等。

于 2012-05-13T18:28:33.943 回答
1

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

于 2013-02-12T09:51:06.450 回答
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;
}
`
于 2014-05-02T07:25:00.963 回答