JavaScript-datetoString将时区名称返回为GMT夏季时间
我正在使用JavaScript APIJavaScript-datetoString将时区名称返回为GMT夏季时间,javascript,timezone,tostring,Javascript,Timezone,Tostring,我正在使用JavaScript API(new Date()).toString()来检测客户端的时区?但是,我发现不同的Windows客户端会为同一时区返回不同的时区名称。例如,如果客户机位于GMT+0100,我们可以获得如下时区名称 2017年9月25日星期一21:04:22 GMT+0100(GMT夏季时间) 2017年9月25日星期一21:04:22 GMT+0100(GMT夏令时) 一个名称包含Summer,另一个名称包含Daylight。如何使此API返回与GMT夏令时相同的时区名称
(new Date()).toString()来检测客户端的时区?但是,我发现不同的Windows客户端会为同一时区返回不同的时区名称。例如,如果客户机位于GMT+0100,我们可以获得如下时区名称
2017年9月25日星期一21:04:22 GMT+0100(GMT夏季时间)
2017年9月25日星期一21:04:22 GMT+0100(GMT夏令时)
一个名称包含Summer,另一个名称包含Daylight。如何使此API返回与GMT夏令时相同的时区名称
如何使此API返回与GMT夏令时相同的时区名称
你不能。Date
对象的ToString
函数返回特定于实现的值。理想情况下,它将在当前语言环境中显示一个人类可读的时区名称,但实际上它可以是任何东西,并且在实现之间没有一致性
此外,两个名字都不对。在英国,夏令时唯一正确的英文名称是“英国夏令时”
但是,如果只针对完全支持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,没有在较旧的浏览器中实现。Javascripts Date API很差劲,你会因为沮丧而离开大楼。在这里使用和他们的可怕的图书馆。“这将节省混凝土。”Darkrum感谢您提供的信息。我们现在正在使用它来检测,但是,它会检测到某些日光或非英语操作系统clinet的错误时区。你认为它会支持这个场景吗?谢谢Matt。我们想找到一种方法来检测当前用户的客户端时区。您提供的API可用于时区已知的场景。你知道我们可以用别的方法来探测时区吗?是的,这已经被问了好几次了。顺便说一句,以后尽量避免。:)