用JavaScript获取客户端的时区(和偏移量)

如何收集访客的时区信息

我需要两者:

  1. 时区(例如,欧洲/伦敦)
  2. 以及UTC或GMT的偏移量(例如,UTC+01)

使用偏移量来计算时区是一种错误的方法,而且您总是会遇到问题。时区和夏令时规则在一年中可能会发生多次变化,很难跟上变化

要以JavaScript获取系统的IANA时区,您应该使用

console.log(Intl.DateTimeFormat().resolvedOptions().timeZone)

截至2019年9月,全球95%的浏览器都采用了这种方式

旧的兼容性信息

ecma-402/1.0表示,如果未提供给构造函数,时区可能未定义。然而,未来的草案(3.0)通过更改为系统默认时区解决了这个问题

在此版本的ECMAScript国际化API中
如果未使用时区属性,则时区属性将保持未定义状态
在提供给Intl.DateTimeFormat
构造函数
。但是,应用程序不应依赖于此,因为将来
版本可能会返回一个字符串值,标识主机环境的
而不是当前时区

在ecma-402/3.0中,仍在草案中,它改为

在此版本的ECMAScript 2015国际化API中
时区属性将是默认时区的名称(如果没有)
时区属性是在提供给的选项对象中提供的
Intl.DateTimeFormat构造函数。以前的版本保留了
时区在本例中未定义属性

发表评论