我正在以这种格式获取日期字符串-'March 12 2019 11:30 pm',还有以小时为单位的偏移量,例如+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 pm
convertToLocalTime('March 12 2019 11:30 pm', -8)
应该将日期定为2019年3月13日中午12:00。
答案 0 :(得分:0)
也许是这样的:
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));
答案 1 :(得分:0)
最重要的是,添加您当前的时区偏移量
(-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());