关于谷歌浏览器:Javascript – 检测用户的语言环境是否设置为使用12小时或24小时时间格式

Javascript — Detect if user's locale are set to use 12-hour or 24-hour time format

一种方法是解析new Date().toLocaleString()
但这在chrome / webkit中不起作用,因为它返回的字符串不依赖于用户的语言环境(请参阅http://code.google.com/p/chromium/issues/detail?id=3607上的错误报告)

我强调,我正在寻找一种只有客户端的解决方案,并且它在铬中起作用。


只要Chromium不能修复toLocaleString(),铬就无法做到这一点。

对于Firefox和IE解析,toLocaleString()将提供该信息。

编辑

显然toLocalString()已在Chrome中修复。因此解析toLocaleString()是一种解决方案。


你永远不应该这样搜索本地模式。 toLocaleString()显然是一个错误(源自Java),不应该使用。正如您所提到的,这种方法在各种浏览器中都不受支持(Chrome只是其中之一)。
事实上,唯一能够正确(但不是100%正确)的网络浏览器(来自流行的浏览器)是IE浏览器。

要根据区域设置正确格式化日期,请使用Globalize。它包含从.Net转储的本地化模式。
您也可以使用Dojo,它也允许区域设置感知格式,但基于CLDR。

编辑,存在新的事实

JavaScript中的I18n有一个新标准 - ECMA-402。实际上这个标准允许使用JS Date的对象。但是,应始终传递语言标记:

1
2
var date = new Date();
var formatted = date.toLocaleString('de-DE');

唯一的问题是,我所知道的目前唯一实现ECMA-402的网络浏览器是Google Chrome。

现在似乎仍然可行的方法是使用iLib的内容。


为除Chrome以外的所有浏览器解析(new Date).toLocaleString(),并针对Chrome的区域设置地图及其时间格式检查navigator.language


我知道这将是最不受欢迎的方式,但你能不能只检查时间?

如果时间在12之前,则将时间设置为1pm并测试输出是13还是1。

我知道它是一个想法的鞋拔,但如果放入一个漂亮的Date.prototype.is24hour(),则返回true;它可以很好地工作?

我使用http://www.datejs.com/和日期。倾向于做我需要的一切!因此,您可以将其与自定义原型功能一起使用,这将为您提供所需的功能!