Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-datetoString将时区名称返回为GMT夏季时间_Javascript_Timezone_Tostring - Fatal编程技术网

JavaScript-datetoString将时区名称返回为GMT夏季时间

JavaScript-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夏令时相同的时区名称

我正在使用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夏令时相同的时区名称

如何使此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可用于时区已知的场景。你知道我们可以用别的方法来探测时区吗?是的,这已经被问了好几次了。顺便说一句,以后尽量避免。:)