我使用JavaScript API (new Date()).toString()
来检测客户端的时区?但是,我发现不同的Windows客户端将为同一时区返回不同的时区名称。例如,如果客户端在GMT + 0100中,我们可以获得如下所示的时区名称。
Mon Sep 25 2017 21:04:22 GMT+0100 (GMT Summer Time)
Mon Sep 25 2017 21:04:22 GMT+0100 (GMT Daylight Time)
一个名称包含Summer,另一个名称包含Daylight。如何使此API返回与GMT Daylight Time
相同的时区名称?
答案 0 :(得分:1)
如何使此API返回与GMT Daylight Time相同的时区名称?
你不能。 ToString
对象的Date
函数返回实现特定的值。理想情况下,它会在当前语言环境中显示人类可读的时区名称,但实际上它可以是任何内容,并且实现之间没有一致性。
此外,两个名字都不正确。在英国夏令时唯一正确的英文名称是"英国夏令时"。
但是,如果您只定位完全支持ECMA国际化API(ECMA-402)的较新环境,那么您可以使用ToLocaleString
功能,如下所示:
new Date().toLocaleString('en-GB', { timeZone: 'Europe/London', timeZoneName: 'long' })
//=> "27/09/2017, 06:00:20 British Summer Time"
结果应该在可用时保持一致。请记住,这是一个相对较新的API,并未在旧版浏览器中实现。