我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。
JavaScript中有数字格式化器吗?
我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。
JavaScript中有数字格式化器吗?
当前回答
这里有一个简单的递归解决方案,适用于任何数量的数字。
function numToNDigitStr(num, n)
{
if(num >= Math.pow(10, n - 1)) { return num; }
return "0" + numToNDigitStr(num, n-1);
}
其他回答
我知道这是一个古老的帖子,但我想提供一个更灵活和面向对象的解决方案选项。
我已经推断了接受的答案,并扩展了javascript的Number对象,以允许可调的零填充:
Number.prototype.zeroPad =函数(数字){ Var循环=数字; Var 0 = ""; While(循环){ 零+= "0"; 循环,; } 返回(this.toString()。长度为>位数)? this. tostring ():(0 + this).slice(-digits); } Var v = 5; console.log (v.zeroPad (2));//返回"05" console.log (v.zeroPad (4));//返回"0005"
编辑:添加代码以防止截断比要求的数字更长的数字。
注意:除了IE,这在其他所有浏览器中都是过时的。请改用padStart()。
这是我发现的最简单的解决方法:-
let num = 9; // any number between 0 & 99
let result = ( '0' + num ).substr( -2 );
你可以使用padStart方法:
更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart
check this example:函数n(num, len = 2) { 返回“$ {num}”。padStart (len, ' 0 '); } console.log (n (9));/ /打印“09” console.log (n (10));/ /打印“10” console.log (n (999));/ /打印“999” console.log (n(999 6)); / /打印“000999”
我建立了一个非常简单的格式函数,每当我需要一个简单的日期格式化时,我就调用它。当数字小于10时,它处理将个位数格式化为两位数。它踢出的日期格式为2018年9月29日星期六- 00:05:44
这个函数被用作utils变量的一部分,所以它被称为:
let timestamp = utils._dateFormatter('your date string');
var utils = {
_dateFormatter: function(dateString) {
let d = new Date(dateString);
let hours = d.getHours();
let minutes = d.getMinutes();
let seconds = d.getSeconds();
d = d.toDateString();
if (hours < 10) {
hours = '0' + hours;
}
if (minutes < 10) {
minutes = '0' + minutes;
}
if (seconds < 10) {
seconds = '0' + seconds;
}
let formattedDate = d + ' - ' + hours + ':' + minutes + ':' + seconds;
return formattedDate;
}
}
这里有一个简单的递归解决方案,适用于任何数量的数字。
function numToNDigitStr(num, n)
{
if(num >= Math.pow(10, n - 1)) { return num; }
return "0" + numToNDigitStr(num, n-1);
}