Почему двузначное число не работает для Date.toLocaleTimeString? - PullRequest
1 голос
/ 17 мая 2019

Клянусь, я делаю это правильно, как описано в MDN :

(new Date()).toLocaleTimeString(undefined, {
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit'
})

Но это выводит "3:13:22 AM" .... час не 2-цифра.Что я делаю неправильно?Я очень устал.

Ответы [ 3 ]

2 голосов
/ 17 мая 2019

Если я правильно понимаю, вы хотите выход через 24 часа?

let date = new Date().toLocaleTimeString(undefined, {
    hour12: false
});

console.log(date);

РЕДАКТИРОВАТЬ: кажется, что ваш первоначальный вопрос является проблемой, которая была рассмотрена ранее, но классифицируется как ошибка. https://bugs.chromium.org/p/chromium/issues/detail?id=507037

1 голос
/ 17 мая 2019

Свойство hour:'2-digit', похоже, игнорируется основными Chrome, Firefox, Safari и NodeJS.Вместо этого они применяют значение параметра hour12: (т. Е. 12 или 24-часовое обозначение), вместо этого:

hour12:true приводит к «3:00:00 PM», так как на самом деле никто не пишет «03:00:00 вечера "с наличием PM.Это может сбить с толку других, когда они думают, что это 24-часовая запись (то есть 3 часа ночи), если кто-то читает быстро и пропускает PM в конце.

hour12:false приводит к "15:00:00"и" PM "больше не нужны.

Так что в вашем примере, если вы хотели 24-часовую запись, просто используйте:

let date = (new Date("17 May 2019 3:13:22 AM")).toLocaleTimeString(undefined, {
    hour12: false,
    hour: '2-digit', 
    minute: '2-digit',
    second: '2-digit'
})

console.log(date); //03:13:22
1 голос
/ 17 мая 2019

Попробуй вот так.установить hour12 to false.Таким образом, вы можете получить 2-значные часы, начиная с 0, если меньше 10.

var a = (new Date()).toLocaleTimeString(undefined, {
    hour12: false,
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit'
});

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