【发布时间】:2021-12-21 16:14:00
【问题描述】:
我正在尝试将 ISO 时间重置为本地时间,但在转换时遇到了一些问题。
目前,我:
// incoming ISO date
let date = new Date('2021-11-08T20:31:23.746Z');
// 1. get timezone offset in hours
const offset = date.getTimezoneOffset() / 60;
// 2. calculate local hour
let localHour = date.toISOString().split('T')[1].substring(0, 2) - offset;
// 3. calculate local time
let localTime = date.toISOString().replace(/[T-:]/, localHour);
console.log(localTime);
// ISO Date
// 2021-11-08T20:31:23.746Z (original)
// 2021-11-08T13:23.746Z (local timezone)
在第 3 步中,我尝试仅替换“T”之后的前两个字符,但是,这不是正则表达式的正确解决方案。
【问题讨论】:
-
正则表达式应为
T..以匹配T和以下 2 个字符。 -
如果时差改变日期,这将不起作用。
标签: javascript string time timezone date-conversion