JavaScript显示小时,如果小时数小于10,则在小时数前加一个零

JavaScript显示小时,如果小时数小于10,则在小时数前加一个零,javascript,date,time,formatting,Javascript,Date,Time,Formatting,使用时: Date.toLocaleTimeString() 有没有办法让它显示为01:42:35 PM而不是1:42:35 PM 我试着在这里加上: Date.toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit', second: '2-digit'}) 但它仍然只产生一个位数的小时(除非它在10之后)。如果我的读数正确,根据,这似乎是有意的 否则,如果f为“2位”,则 设fv为FormatN

使用时:

Date.toLocaleTimeString()
有没有办法让它显示为
01:42:35 PM
而不是
1:42:35 PM

我试着在这里加上:

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

但它仍然只产生一个位数的小时(除非它在10之后)。

如果我的读数正确,根据,这似乎是有意的

  • 否则,如果f为“2位”,则
    • 设fv为FormatNumber(nf2,v)
    • 如果 fv的长度属性大于2,设fv为fv的子字符串 包含最后两个字符

我不明白为什么会这样指定,但事实就是如此。如果你想做零填充,似乎你只需要自己做预填充。

我就是这样做的

var datelocal = new Date(2016, 01, 01, 1, 1, 1).toLocaleTimeString(navigator.language, {
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
});
我还附上了一份报告


注意:您必须提供新的Date(),而不是将日期参数传递给Date方法来获取当前日期。

我倾向于在JavaScript项目中使用Date.prototype.toLocaleTimeString或类似函数,而不是依赖Date.prototype.toLocaleTimeString或类似函数来获取正确的格式。js是一个JavaScript库,专门用于解析、验证、操作和记录日期。要以您描述的格式获取该时间的字符串,您可以使用:

var s = moment().format('hh:mm:ss A');
console.log(s);
这将使用当前日期。如果您想使用其他日期,也可以这样做:

var s = moment(new Date(2016, 8, 19, 1, 10)).format('hh:mm:ss A');
console.log(s);

它省去了你自己做零填充和其他类似事情的麻烦。

这不是我希望的答案,哈哈,但似乎是这样。谢谢你找到那个。我所有的搜索结果都没有。是的,我正在这样做。为了简单起见,我刚发了帖子。它仍然不能产生2位数的小时。当我按下你的按钮时,我得到“1:01:01 AM”。你得到了什么?您使用的浏览器是什么?没有日期。但有toLocaleTimeString。它是国际化API的一部分,并非所有正在使用的浏览器都支持它。