toLocaleTimeString() 的 MDN 文档表明 hourCycle
和 hc
选项有四个可能的值: "h11"
、 "h12"
、 "h23"
和 "h24"
。
两个可能的值让我觉得非常明显(即 "h12"
和 "h24"
),但另外两个,我不知道它们做什么,我的duckduckfoo/googlefoo 失败了!"h11"
和 "h23"
值代表什么?
我最好的猜测是它们是 0
和 1
的某种类型的 "h12"
和 "h24"
派生,但基础日期戳仍然相同,并且记录的值相同,所以如果是这样,区别在哪里?
这应该在 MDN's toLocalTimeString page 或 ECMAScript's toLocalTimeString page 上记录或至少链接到,但事实并非如此。它也真的让我觉得应该很容易弄清楚,但我没有看到区别,它现在在我的皮肤下爬行!
const now = new Date();
console.log('hourCycle: h11', now.toLocaleTimeString('en-US', { hourCycle: 'h11' }))
console.log('hourCycle: h12', now.toLocaleTimeString('en-US', { hourCycle: 'h12' }))
console.log('hourCycle: h23', now.toLocaleTimeString('en-US', { hourCycle: 'h23' }))
console.log('hourCycle: h24', now.toLocaleTimeString('en-US', { hourCycle: 'h24' }))
最佳答案
我发现 dateStyle and timeStyle options for Intl.DateTimeFormat 的提议说:
英式或美式可能更喜欢 h12
:
› new Date(2019,4,1,12,0,0).toLocaleString('en-US', { hourCycle: 'h12' })
‹ "5/1/2019, 12:00:00 PM"
› new Date(2019,4,1,12,0,0).toLocaleString('en-US', { hourCycle: 'h11' })
‹ "5/1/2019, 0:00:00 PM"
h24
必须谨慎使用。如果日期部分是前一天的值,那就太好了。› new Date(2019,4,1,0,59,59).toLocaleString('ja-JP', { hourCycle: 'h23' })
‹ "2019/5/1 0:59:59"
› new Date(2019,4,1,0,59,59).toLocaleString('ja-JP', { hourCycle: 'h24' })
‹ "2019/5/1 24:59:59"
Compatibility table in MDN 说 Firefox 58 和 Edge 支持这个。
关于javascript - Date.prototype.toLocaleTimeString() 中的hourCycle 选项有什么区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54258401/