将 UTC 时间转换为特定时区客户端

Convert UTC time to specific timezone client side

是否可以使用 JavaScript 将来自服务器的 UTC 日期转换为特定的(英国)时区?这是针对用户可能配置了不正确的本地时区的情况。

您可以在传递给 toLocaleString 的选项中指定时区,这将使用 Date 对象表示的 point-in-time 创建一个本地化字符串,该字符串将转换为指定时区。

例如:

new Date("2020-09-17T17:15:00.000Z").toLocaleString('en-GB', { timeZone: 'Europe/London' })
//=> "17/09/2020, 18:15:00"

注意第一个参数是格式的语言环境,不是时区。如果您不想要特定格式,您可以传递 undefined 代替 - 这将使用用户的活动区域设置来选择格式。

另请注意,您无法获得处于该时区的 Date 对象。 Date 对象仅存储一个时间点(作为具有毫秒精度的 Unix 时间戳),它 总是 使用计算机的本地时区设置来实现其需要本地时间的功能转化次数(上面显示的除外)。

TC39 Temporal proposal 正在努力改善这一点。)