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

问题描述

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

解决方法

您可以在传递给toLocaleString的选项中指定时区,该时区将使用Date对象表示的时间点来创建本地化的字符串,该字符串将转换为指定的时间区域。

例如:

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正在努力改善这一点。)