如何收集访客的时区信息
我需要两者:
- 时区(例如,欧洲/伦敦)
- 以及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构造函数。以前的版本保留了
时区在本例中未定义属性