检测用户是否';使用javascript将s语言环境设置为12小时或24小时时间格式

检测用户是否';使用javascript将s语言环境设置为12小时或24小时时间格式,javascript,browser,datetime-format,time-format,Javascript,Browser,Datetime Format,Time Format,如何使用Javascript检查用户使用的是12小时还是24小时时间格式,以及是否使用第三方库,如moment.js 我还尝试了newdate().toLocaleString(),但在firefox和google chrome中测试不起作用。firefox始终显示12小时格式,chrome始终显示24小时时间格式,如下所示: /* * Detects browser's locale 24h time preference * It works by checking whether ho

如何使用Javascript检查用户使用的是12小时还是24小时时间格式,以及是否使用第三方库,如moment.js 我还尝试了
newdate().toLocaleString()
,但在firefox和google chrome中测试不起作用。firefox始终显示12小时格式,chrome始终显示24小时时间格式,如下所示:

/*
 * Detects browser's locale 24h time preference
 * It works by checking whether hour output contains a space ('1 AM' or '01')
 */
const isBrowserLocale24h = () =>
  !new Intl.DateTimeFormat(undefined, { hour: 'numeric' }).format(0).match(/\s/);
检查的浏览器兼容性

您也许可以回过头来看以下内容,但我不确定是否所有地区的输出末尾都有
AM/PM
designation(无论使用哪个字符)。这只是检查最后一个字符是否为数字:

Number.isFinite(Number((new Date()).toLocaleString().slice(-1)))

马里奥·博纳奇的回答对我来说并没有达到预期的效果,尽管它为我指明了正确的方向。以下是我一开始尝试的:

/*
*检测导航器区域设置24小时时间首选项
*它通过检查小时输出是否包含AM(“1 AM”或“01 h”)来工作
*/
常量isBrowserLocale24h=()=>
!新的Intl.DateTimeFormat(未定义,{hour:“numeric”})
.格式(0)
.match(/AM/);
它没有像预期的那样工作,因为它显然采用了浏览器的安装语言,而不是用户首选的语言。将
未定义的
更改为执行此操作。这里,我们根据用户的首选语言检查时间格式:

/*
*检测导航器区域设置24小时时间首选项
*它通过检查小时输出是否包含AM(“1 AM”或“01 h”)来工作
*基于用户的首选语言
*/
常量isBrowserLocale24h=()=>
!新的Intl.DateTimeFormat(navigator.language,{hour:“numeric”})
.格式(0)
.match(/AM/);