javascript格式的数字有2位数字

我想格式化一个数字只有2位数。 这个问题是由于0-9传递的,所以我需要把它格式化为00-09?

在JavaScript中是否有一个数字格式化程序?

谢谢

我发现的最好的方法是类似于以下内容(请注意,这个简单的版本只适用于正整数):

var myNumber = 7; var formattedNumber = ("0" + myNumber).slice(-2); console.log(formattedNumber); 

如果数字大于9,则将该数字转换为string(一致性)。 否则,添加一个零。

 function n(n){ return n > 9 ? "" + n: "0" + n; } n( 9); //Returns "09" n(10); //Returns "10" n(999);//Returns "999" 

使用任何数字的toLocaleString()方法。 所以对于数字6,如下所示,你可以得到理想的结果。

 (6).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false}) 

会产生string'06'。

这是我通常使用的一个简单的数字填充函数。 它允许任何数量的填充。

 function leftPad(number, targetLength) { var output = number + ''; while (output.length < targetLength) { output = '0' + output; } return output; } 

例子:

 leftPad(1, 2) // 01 leftPad(10, 2) // 10 leftPad(100, 2) // 100 leftPad(1, 3) // 001 leftPad(1, 8) // 00000001 
 ("0" + (date.getMonth() + 1)).slice(-2); ("0" + (date.getDay())).slice(-2); 

你可以做:

 function pad2(number) { return (number < 10 ? '0' : '') + number } 

例:

 document.write(pad2(0) + '<br />'); document.write(pad2(1) + '<br />'); document.write(pad2(2) + '<br />'); document.write(pad2(10) + '<br />'); document.write(pad2(15) + '<br />'); 

结果:

 00 01 02 10 15 

这很简单,效果很好:

 function twoDigit(number) { var twodigit = number >= 10 ? number : "0"+number.toString(); return twodigit; } 

看来你可能有一个string,而不是一个数字。 用这个:

 var num = document.getElementById('input').value, replacement = num.replace(/^(\d)$/, '0$1'); document.getElementById('input').value = replacement; 

这是一个例子: http : //jsfiddle.net/xtgFp/

快速和脏一个class轮….

 function zpad(n, len) { return 0..toFixed(len).slice(2,-n.toString().length)+n.toString(); } 

JavaScript没有内置的数字格式化器,但是有一些库可以实现这一点:

  1. underscore.string提供了一个sprintf函数(以及许多其他有用的格式化程序)
  2. javascript-sprintf ,其中underscore.string借用。

我知道这是一个古老的post,但我想提供一个更灵活的OO解决scheme选项。

我已经推断了接受的答案,并扩展了javascript的Number对象以允许可调零填充:

 Number.prototype.zeroPad = function(digits) { var loop = digits; var zeros = ""; while (loop) { zeros += "0"; loop--; } return (this.toString().length > digits) ? this.toString() : (zeros + this).slice(-digits); } var v = 5; v.zeroPad(2); // returns "05" v.zeroPad(4); // returns "0005" 

先前答案的改进版本

 function n(n){ var ret = n > 9 ? "" + n: "0" + n; return parseInt(n); } 

要么

 function zpad(n,l){ return rep(ln.toString().length, '0') + n.toString(); } 

 function rep(len, chr) { return new Array(len+1).join(chr); } 

在所有现代浏览器中,您都可以使用

 numberStr.padStart(2, "0"); 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

 function zeroPad(numberStr) { return numberStr.padStart(2, "0"); } var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; numbers.forEach( function(num) { var numString = num.toString(); var paddedNum = zeroPad(numString); console.log(paddedNum); } ); 
 <html> <head> <script src="jquery-1.11.0.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('#test').keypress(allowOnlyTwoPositiveDigts); }); function allowOnlyTwoPositiveDigts(e){ var test = /^[\-]?[0-9]{1,2}?$/ return test.test(this.value+String.fromCharCode(e.which)) } </script> </head> <body> <input id="test" type="text" /> </body> </html> 

这是一个简单的recursion解决scheme,适用于任意数量的数字。

 function numToNDigitStr(num, n) { if(num >= Math.pow(10, n - 1)) { return num; } return "0" + numToNDigitStr(num, n-1); } 

如果你想同时限制你的数字:

 function pad2(number) { number = (number < 10 ? '0' : '') + number; number = number.substring(0,2); return number; } 

这也将砍掉任何超过两位数字的值。 我一直在fanaur的解决scheme上延伸这一点。

这是我的版本。 可以很容易地适应其他情况。

 function setNumericFormat(value) { var length = value.toString().length; if (length < 4) { var prefix = ""; for (var i = 1; i <= 4 - length; i++) { prefix += "0"; } return prefix + value.toString(); } return value.toString(); } 

如果你的项目中没有lodash,那么添加整个库只是为了使用一个函数将是一个矫枉过正的行为。 这是我见过的最复杂的问题解决scheme。

 _.padStart(num, 2, '0') 
  function colorOf(r,g,b){ var f = function (x) { return (x<16 ? '0' : '') + x.toString(16) }; return "#" + f(r) + f(g) + f(b); } 

对于任何想要有时间差异并且能够取得负值的结果的人来说都是一个不错的select。 垫(3)=“03”,垫(-2)=“-02”,垫(-234)=“-234”

 pad = function(n){ if(n >= 0){ return n > 9 ? "" + n : "0" + n; }else{ return n < -9 ? "" + n : "-0" + Math.abs(n); } } 

有了这个function,你可以打印任何你想要的数字

 function frmtDigit(num, n) { isMinus = num < 0; if (isMinus) num *= -1; digit = ''; if (typeof n == 'undefined') n = 2;//two digits for (i = 1; i < n; i++) { if (num < (1 + Array(i + 1).join("0"))) digit += '0'; } digit = (isMinus ? '-' : '') + digit + num; return digit; }; 

我的例子是

 <div id="showTime"></div> function x() { var showTime = document.getElementById("showTime"); var myTime = new Date(); var hour = myTime.getHours(); var minu = myTime.getMinutes(); var secs = myTime.getSeconds(); if (hour < 10) { hour = "0" + hour }; if (minu < 10) { minu = "0" + minu }; if (secs < 10) { secs = "0" + secs }; showTime.innerHTML = hour + ":" + minu + ":" + secs; } setInterval("x()", 1000)