Jquery格式数字到4位数,包括冒号

时间:2017-02-17 10:35:28

标签: jquery numbers format

我的脚本接收“时间”值,但格式各种各样:

    100
    0143
    0015
    1127
    1300
    1230
    2258
    etc...

我正在尝试找到一种方法将其转换为始终为4位数,然后在第二位和第三位之间包含一个冒号。例如:

100 becomes 01:00
0143 becomes 01:43
0015 becomes 00:15
2258 becomes 22:58 etc

有人可以建议最好的方法吗?

我正在考虑向后工作,剥去最后两位数字,前面加上:并在需要时填充其余数字。

但这似乎不对!

由于

更新..

这似乎有效:

var time = ("0000" + timer).slice(-4)
time = time.substr(0,2) + ":" + time.substr(2);

2 个答案:

答案 0 :(得分:2)

我个人认为您的实施没有任何问题。这很简单,并做了它应该做的事情。要插入冒号字符,您还可以使用JavaScript内置的replace()和正则表达式:

var n = 100;
('0000' + n.toString()).
  slice(-4).
  replace(/(\d{2})(\d{2})$/, '$1:$2');   // => '01:00'

答案 1 :(得分:1)

这是一个实现您想要的简单代码。但是您已经使用工作代码更新了您的问题,并且显然代码更好,更紧凑。



// This code is only for demo
var timeStrings = ["100", "0120", "2354" ];
timeStrings.forEach(function( timeString ){
  console.log( returnFormattedTime( timeString ) );
});//forEach()


// here is the function that formats these time strings
function returnFormattedTime( timeString ){
  // pad with zero first if required
  var unformattedTime = timeString;
  var numZeroes = 4 - unformattedTime.length;
  if( numZeroes > 0 ){
    var zeroPadding = "";
    for( var i = 0; i < numZeroes; i++ ){
      zeroPadding += "0";
    }//for()
    unformattedTime = zeroPadding + unformattedTime;
  }//if()

  var formattedTime = unformattedTime[0]+unformattedTime[1]+":"+unformattedTime[2]+unformattedTime[3];
  return formattedTime;
  
}//returnFormattedTime()
&#13;
&#13;
&#13;