我需要添加/删除本地偏移量(时区)到我从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。我出错的任何想法?
答案 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 zone或How to initialize javascript date to a particular timezone()重复。