使用Javascript将偏移/本地时间添加到UTC日期/字符串

时间:2017-09-25 07:50:44

标签: javascript date datetime

我需要添加/删除本地偏移量(时区)到我从Rest API获得的UTC字符串。所以,例如我从我的服务器收到以下内容,2040-09-23T22:00:00.000Z我希望添加或删除我在单独的函数中使用return new Date().getTimezoneOffset();确定的本地UTC偏移量。

所以要添加/删除本地时区,我会做这样的事情,注意我的主要功能,然后是帮助函数以及我如何确定当地时间

function makeLocalTime(utcFromServer) {
   return new Date(utcFromServer + (getOffSet() * 60 * 1000));
}

function getOffSet() {
    return new Date().getTimezoneOffset();
}

var localTimeUTCwithOffset = makeLocalTime('2040-09-23T22:00:00.000Z');

然而,这会返回错误消息Invalid Date。我出错的任何想法?

1 个答案:

答案 0 :(得分:0)

您似乎正在处理像Date这样的字符串。您需要将字符串解析为Date,然后进行调整:

var s = '2040-09-23T22:00:00.000Z';
var d = new Date(s);

具有偏移量的ISO 8601扩展格式字符串将被正在使用的大多数(但不是所有)浏览器正确解析,例如:

var s = '2040-09-23T22:00:00.000Z';
console.log(s + '\n' + new Date(s).toISOString());

如果您尝试根据特定偏移确定时间,可以调整UTC时间值,然后使用UTC方法格式化您自己的日期字符串。如果您正在尝试这样做,那么这可能与Creating a Date object in a specific time zoneHow to initialize javascript date to a particular timezone()重复。