【发布时间】:2017-09-25 07:50:44
【问题描述】:
我需要将本地偏移量(时区)添加/删除到我从 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');
但是,这会返回错误消息无效日期。有什么想法我哪里出错了吗?
【问题讨论】:
-
你传入的是日期字符串,试试
return new Date(new Date(utcFromServer) + (getOffSet() * 60 * 1000)) -
这也会返回一个无效的日期
-
试试
return new Date(new Date(utcFromServer).getTime() + (getOffSet() * 60 * 1000)) -
@MarkSandman 对,它隐式使用日期的
toString方法。 @Titus 的建议应该可行。 -
我不确定您要达到什么目的,请注意浏览器会在使用
new Date(utcFromServer)时将字符串转换为用户的正确时间,所以如果您从服务器是 22:00 UTC,对于用户来说是 17:00,浏览器会将其显示为 17:00。例如:new Date('2040-09-23T22:00:00.000Z') 为我返回 Mon Sep 24 2040 00:00:00 GMT+0200 (IST)。
标签: javascript date datetime