我发誓我做对了,如on MDN所述:
(new Date()).toLocaleTimeString(undefined, {
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
})
但这输出"3:13:22 AM"
。...小时不是2位数字。我究竟做错了什么?我很累。
答案 0 :(得分:2)
如果我理解正确,是否要在24小时内输出?
let date = new Date().toLocaleTimeString(undefined, {
hour12: false
});
console.log(date);
编辑:您的原始问题似乎是先前已涵盖但被归类为错误的问题。 https://bugs.chromium.org/p/chromium/issues/detail?id=507037
答案 1 :(得分:1)
尝试这样。设置hour12 to false
。因此,如果少于10,您将获得以0开头的2位数小时。
var a = (new Date()).toLocaleTimeString(undefined, {
hour12: false,
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
});
console.log(a)
答案 2 :(得分:1)
主要的Chrome,Firefox,Safari和NodeJS似乎忽略了hour:'2-digit'
属性。相反,他们应用选项hour12:
的值(即12或24小时表示法)代替:
hour12:true
的结果为“ 3:00:00 PM”,因为在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