JavaScript - Date toString将时区名称返回为GMT夏令时

时间:2017-09-27 01:23:53

标签: javascript timezone tostring

我使用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相同的时区名称?

1 个答案:

答案 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,并未在旧版浏览器中实现。