如何获取用户当前区域设置的首选
hourCycle
?我在 Firefox 131 和 Chrome 129 中尝试了一些语言环境 ((new Intl.Locale('en-US')).hourCycle
),但都返回 undefined
。
看起来 hourCycle 属性可能不包含在您的特定区域设置或浏览器版本的解析选项中。并非所有浏览器都以相同的方式实现 hourCycle,有些浏览器在某些情况下可能会忽略它。
要解决此问题,您可以通过格式化日期并检查输出来手动确定 hourCycle。这是一种根据时间显示方式推断 hourCycle 的方法:
function getHourCycle() {
const date = new Date(2023, 0, 1, 15); // 3 PM
const formatter12 = new Intl.DateTimeFormat(navigator.language, { hour: 'numeric', hour12: true });
const formatter24 = new Intl.DateTimeFormat(navigator.language, { hour: 'numeric', hour12: false });
const formatted12 = formatter12.format(date);
const formatted24 = formatter24.format(date);
// Check if the output indicates a 12-hour format
if (formatted12.includes('PM') || formatted12.includes('AM')) {
return 'h12';
} else {
return 'h24';
}
}
const hourCycle = getHourCycle();
console.log(hourCycle);