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

Convert UTC date received from server to local timzone date in Javascript

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

我必须在 Javascript 中使用哪个 function/code? 例如,转换此 UTC 日期:'2021-01-20T17:40:35'。

ECMA-262 支持“2021-01-20T17:40:35”格式,但如果没有时区,它会被解析为本地格式。如果你想它被解析为 UTC 只需添加“Z”将偏移量设置为 0,所以:

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

将字符串解析为 UTC。然后本地日期和时间由各种 get* methods, or just toString.

编辑 return

但是,如果您想要一个真正强大的功能,请手动解析它,例如

// 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));

关于格式化日期的问题很多。任何不包含字符“UTC”或“ISO”的 toString 方法都将 return 基于主机系统的时区和 DST 区域设置的本地值。

例如

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'}));