我想把一个数格式化为两位数。这个问题是在传递0-9时引起的,所以我需要将它格式化为00-09。

JavaScript中有数字格式化器吗?


当前回答

@Lifehack的回答对我很有用;我想我们可以用一行来表示正数

 String(input).padStart(2, '0');

其他回答

这是一个老问题,但我想补充一下。在现代浏览器中,你可以使用repeat来简化正数格式:

('0'.repeat(digits - 1) + num).substr(-digits)

如果你想要支持IE并且知道最大数字数(例如,10位):

('000000000' + num).substr(-digits)

对于负整数:

(num < 0 ? '-' : '') + ('000000000' + Math.abs(num)).substr(-digits)

对于正数显式使用+:

['-', '', '+'][Math.sign(num) + 1] + ('000000000' + Math.abs(num)).substr(-digits)

我建立了一个非常简单的格式函数,每当我需要一个简单的日期格式化时,我就调用它。当数字小于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;
  }
}
("0" + (date.getMonth() + 1)).slice(-2);
("0" + (date.getDay())).slice(-2);

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

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

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

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

这也会对任何超过两位数的值进行切取。 我一直在扩展法纳尔的解决方案。