获取用户区域设置的首选`hourCycle`

问题描述 投票:0回答:1

如何获取用户当前区域设置的首选

hourCycle
?我在 Firefox 131 和 Chrome 129 中尝试了一些语言环境 (
(new Intl.Locale('en-US')).hourCycle
),但都返回
undefined

javascript
1个回答
0
投票

看起来 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);
© www.soinside.com 2019 - 2024. All rights reserved.