7

下面的调用24:00在最新的 Chrome 和 Opera 中返回,而它以前返回00:00,这是设计行为吗?

const [, time] = new Date(2020, 1, 1, 0, 0).toLocaleDateString("en-us",
        {
            hour12: false,
            hour: "2-digit",
            minute: "2-digit"
        }).split(", ");

console.info(time); // 24:00

4

2 回答 2

5

使用hourCycle代替hour12并将其设置为h23.

const [, time] = new Date(2020, 1, 1, 0, 0).toLocaleDateString("en-us",
        {
            hourCycle: "h23",
            hour: "2-digit",
            minute: "2-digit"
        }).split(", ");

console.info(time); // 00:00

于 2020-03-12T15:00:13.633 回答
0

在我看来,Chrome(或其 V8 引擎)已更新以匹配规范,该规范在步骤 18(e)(vi) 中说:

如果p是“小时”并且 dateTimeFormat.[[HourCycle]] 是“h24”,那么如果v为 0,则令 v 为 24。

该规范没有改变,但看起来他们必须修复一个错误。(我没有立即在 V8 或 Chromium 问题列表中找到一个,但是......)

有趣的是,Firefox00:00显示24:00.

于 2020-03-12T14:52:31.970 回答