toLocaleDateString возвращает неожиданное отформатированное время - PullRequest
6 голосов
/ 12 марта 2020

Приведенный ниже вызов возвращает 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

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Используйте 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
0 голосов
/ 12 марта 2020

Мне кажется, что Chrome (или его двигатель V8) обновлен, чтобы соответствовать спецификации , которая говорит на шаге 18 (e) (vi):

Если p равно "часу", а dateTimeFormat. [[HourCycle]] равно "h24", то если v равно 0, пусть v равно 24.

Эта спецификация не изменилась, но, похоже, они исправили ошибку. (Я не сразу нашел его в списке выпусков V8 или Chromium, но ...)

Интересно, что Firefox показывает 00:00, а не 24:00.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...