将从服务器接收的UTC日期转换为Javascript中的本地时区日期



使用Javascript,我想将从服务器接收的UTC日期转换为客户端浏览器中的本地时区日期对象。

我必须在Javascript中使用哪个函数/代码?例如,转换此UTC日期:"2021-01-20T17:40:35"。

ECMA-262支持格式"2021-01-20T17:40:35",但没有时区,它被解析为本地。如果您想将其解析为UTC,只需添加"UTC"即可;Z";将偏移量设置为0,因此:

new Date('2021-01-20T17:40:35' + 'Z')

将字符串解析为UTC。然后通过各种get*方法返回本地日期和时间,或者只返回toString

然而,如果你想要一个真正强大的函数,可以手动解析它,例如

// Get the parts
let [Y, M, D, H, m, s] = '2021-01-20T17:40:35'.split(/D/);
// Treat as UTC
let date = new Date(Date.UTC(Y, M-1, D, H, m, s));

关于日期格式,有很多问题。任何不包括字符"的toString方法;UTC";或";ISO";将根据主机系统的时区和夏令时区域设置返回本地值。

例如

let [Y, M, D, H, m, s] = '2021-01-20T17:40:35'.split(/D/);
let date = new Date(Date.UTC(Y, M-1, D, H, m, s));
// Formatted as specified in ECMA-262
console.log(date.toString());
// So-called "locale aware" string, based on language
console.log(date.toLocaleString());
// In another timezone for Antarctica/McMurdo
console.log(date.toLocaleString('default', {timeZone: 'Antarctica/McMurdo', timeZoneName: 'short'}));

最新更新