Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 在浏览器中获取受支持的区域设置_Javascript_Date_Locale - Fatal编程技术网

Javascript 在浏览器中获取受支持的区域设置

Javascript 在浏览器中获取受支持的区域设置,javascript,date,locale,Javascript,Date,Locale,我正在使用date.toLocaleDateString(locale)方法获取用户的日期格式。我在服务器端获取用户的区域设置,其中混合了Accept Language标头和地理编码IP地址(即使您不在美国,浏览器似乎也默认为en US)。但是toLocaleDateString()似乎并不能识别所有的地区,也就是说,如果你识别了日期。toLocaleDateString('en-IE')你会得到美国的日期格式,而不是欧洲的Intl.Collator.supportedLocalesOf('en

我正在使用
date.toLocaleDateString(locale)
方法获取用户的日期格式。我在服务器端获取用户的区域设置,其中混合了Accept Language标头和地理编码IP地址(即使您不在美国,浏览器似乎也默认为en US)。但是toLocaleDateString()似乎并不能识别所有的地区,也就是说,如果你识别了日期。toLocaleDateString('en-IE')你会得到美国的日期格式,而不是欧洲的
Intl.Collator.supportedLocalesOf('en-IE',{localeMatcher:'lookup'})
没有帮助。是否有浏览器支持的区域设置列表


顺便说一句,我已经在Chrome和OSX上的Firefox上尝试了上述方法。

我认为您遇到的问题是supportedLocalesOf()只检查语言,而不是语言环境(换句话说,“语言标记”的最开始)。如果您指定了另一个不受支持的英语语言环境,则日期格式化函数将自动返回“en-us”(而不是在指定其他语言时引发异常)。API的这两个奇怪之处(简单地说)结合在一起,使得在不知不觉中向用户提供看起来正确但错误的日期成为可能

在这个问题被问到(我在注意到之前就开始回答了——哎呀)几年之后,浏览器中对区域设置数据的支持现在已经相当不错了,但是区域设置数据中的变化可能总是会发生

然而,对于Node,支持仍然很差——最近这让我感到有点不舒服,我认为这会伤害到其他人。在v13之前,Node的官方版本只包括对“en-US”的支持(请参阅中的“build”要点)


重要的是要注意,区域设置支持的包含取决于构建,因此,尽管它从v13开始就包含在正式节点构建中,但区域设置数据实际上相当大,因此其他人(例如,Lambda或Firebase函数等FaaS产品)可能会做出不同的权衡决定。因此,像往常一样,最好使用此函数进行测试,而不是检查节点版本。

可能重复:,有点过时…@christophe roussy这与获取区域设置无关-我在服务器端执行此操作。它是关于从区域设置中获取日期格式。我使用它作为从区域设置获取日期格式的基础,但是
toLocaleDateString()
并不能在所有情况下正常工作。