如果小于10,则JavaScript显示小于零的小时

时间:2016-08-26 17:40:44

标签: 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之后)。

3 个答案:

答案 0 :(得分:3)

如果我的阅读是正确的,根据creditCardVerification,这似乎是故意的。

  
      
  • 如果f是“2位数”,那么      
        
    • 设fv为FormatNumber(nf2,v)。
    •   
    • 如果   fv的length属性大于2,让fv为fv的子串   包含最后两个字符。
    •   
  •   

我无法理解为什么会这样指定,但确实如此。如果你想做零填充,看起来你只需要自己添加它。

答案 1 :(得分:0)

它以这种方式为我工作

var datelocal = new Date(2016, 01, 01, 1, 1, 1).toLocaleTimeString(navigator.language, {
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
});

我还附上了plunker

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

答案 2 :(得分:0)

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

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);

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