我得到了这种格式的日期字符串 - '2019年3月12日晚上11:30'以及小时偏移量+5.5。我想将此日期转换为我的浏览器时区。
我试过以下代码
function convertToLocalTime(date, offset) {
const serverTime = new Date(date);
const localOffset = offset * 3600000;
const d = new Date(serverTime.getTime() + localOffset).toUTCString();
return new Date(d);
}
但我得到的日期是Tue Mar 12 2019 15:30:00 GMT+0530 (India Standard Time)
这是错误的。
预期结果应该是如果日期是2019年3月12日晚上11:30,并且给定的偏移是-8,我的当地时间偏移为+5.5,我应该将日期作为2019年3月13日中午12:00。
convertToLocalTime('March 12 2019 11:30 pm', -8)
应该将日期定为2019年3月13日中午12:00。
也许是这样的:
function convertToLocalTime(date, offset) {
var options = { year: 'numeric', month: 'long', day: 'numeric', hour: 'numeric', minute: 'numeric' };
var serverdate = new Date(date);
var ISTOffset = 330;
var tzDifference = offset * 60 + (ISTOffset + serverdate.getTimezoneOffset() );
var offsetTime = new Date(serverdate.getTime() + tzDifference * 60000);
return offsetTime.toLocaleDateString("en-US", options);
}
console.log(convertToLocalTime('March 12 2019 11:30 pm', -8.00));
(-n)
反转号码n
的标志
serverTime.getTimezoneOffset()
将在几分钟内返回UTC的时区差异,因此您可以在几小时内将/60
发送到同一个单位。
您还可以以小时为单位反转时区偏移的符号。function convertToLocalTime(date, offset) {
const serverTime = new Date(date);
const localOffset = ((-offset) + (-(serverTime.getTimezoneOffset() / 60))) * 3600000;
const d = new Date(serverTime.getTime() + localOffset).toUTCString();
return new Date(d);
}
let dt = convertToLocalTime('March 12 2019 11:30 pm', -8);
console.log(dt);
console.log(dt.toString());