【问题标题】:Convert UTC time to specific timezone client side将 UTC 时间转换为特定时区客户端
【发布时间】:2021-01-04 14:00:27
【问题描述】:

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

【问题讨论】:

标签: javascript timezone utc


【解决方案1】:

您可以在传递给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 时间戳),并且它总是将计算机的本地时区设置用于需要本地时间转换的函数(除了 show以上)。

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

【讨论】:

  • 谢谢,如何确定转换为 GMT 或 BST?
  • IANA 时区名称Europe/London 是英国时区的标识符。现代浏览器(和 Node.js)附带此数据,或使用操作系统中的底层 tzdata。该数据包含有关 GMT 或 BST 是否生效以及何时生效的所有规则。您可以在this timezone tag wikion Wikipedia 阅读更多内容。有关有效时区名称的列表,请参阅 here
猜你喜欢
  • 2020-03-21
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 2020-06-16
  • 2014-08-12
  • 2021-07-13
  • 1970-01-01
相关资源
最近更新 更多