我有以下Unix时间戳:1611328500000(Fri Jan 22 2021 10:15:00 GMT-0500 (Eastern Standard Time))。
我需要以韩国标准时间显示它。为此,我正在使用Intl.DateTimeFormat. 但是,由于某种原因,当我尝试对其进行格式化时,我得到的结果是24:15。除非我有妄想症,否则我很确定这高于通常的 24 小时制(0:00 到 23:59)。
Google 告诉我我的结果应该是0:15,显然是在接下来的日期(1 月 22 日星期六)。
这是一个最小的工作示例:
const date = new Date(1611328500000);
const timeOptions = {
hour12: false,
hour: '2-digit',
minute: '2-digit'
};
const formatter = new Intl.DateTimeFormat('en-US', {
timeZone: 'Asia/Seoul', ...timeOptions
});
console.log(formatter.format(date));Run Code Online (Sandbox Code Playgroud)
我疯了吗?在某些情况下,时间可以达到 24:15 吗?这里发生了什么?
编辑:我刚刚发现这个页面似乎遇到了类似的问题。那里提供的答案将我指向名为 的东西hourCycle,并带有指向 MDN 的Intl.DateTimeFormat.
但是,hourCycle仅在该页面的浏览器支持部分中出现一次。将建议添加hourCycle: h11到我的timeOptions不起作用。
进一步挖掘,我发现了这个页面,它被h23列为一个有效的选项。这当然是我所追求的!但是,唉……我的结果仍然是 24:15。
从hour12: true切换hourCycle: 'h23'到 显示从00:00到的小时数23:59。
const date = new Date(1611328500000);
const timeOptions = {
hourCycle: 'h23',
hour: '2-digit',
minute: '2-digit'
};
const formatter = new Intl.DateTimeFormat('en-US', {
timeZone: 'Asia/Seoul', ...timeOptions
});
console.log(formatter.format(date));Run Code Online (Sandbox Code Playgroud)