toLocaleTimeString() 的 MDN 文档表明 hourCyclehc 选项有四个可能的值: "h11""h12""h23""h24"

两个可能的值让我觉得非常明显(即 "h12""h24" ),但另外两个,我不知道它们做什么,我的duckduckfoo/googlefoo 失败了!
"h11""h23" 值代表什么?

我最好的猜测是它们是 01 的某种类型的 "h12""h24" 派生,但基础日期戳仍然相同,并且记录的值相同,所以如果是这样,区别在哪里?

这应该在 MDN's toLocalTimeString pageECMAScript'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/

10-11 01:30