如何在Javascript中使用NumberFormat?

时间:2019-03-25 16:12:03

标签: javascript number-formatting

我希望我的倒数计时器显示两位数,例如“ 53:00”而不是“ 53:0”。不知道这里出了什么问题?谢谢!

function convertSeconds(s) {
    var min = Math.floor(s / 60);
    var sec = s % 60;
    return nf(min, 2) + ':' + nf(sec, 2);
  }

4 个答案:

答案 0 :(得分:2)

要填充零,您可以

function nf(num, places) {
  var s = '0' + num;
  return s.slice(places * -1);
}

function convertSeconds(s) {
  var min = Math.floor(s / 60);
  var sec = s % 60;
  return nf(min, 2) + ':' + nf(sec, 2);
}

应该为您带来想要的东西

答案 1 :(得分:2)

您可以使用padStart()来确保字符串是特定长度。如果不是,它将用您想要的任何东西填充它。在这种情况下,0

const nf = (n, c) => n.toString().padStart(c, '0');

function convertSeconds(s) {
  var min = Math.floor(s / 60);
  var sec = (s % 60)
  return nf(min, 2) + ':' + nf(sec, 2);
}

console.log(convertSeconds(64))
console.log(convertSeconds(119))

不确定是否要填补分钟数。

还有Intl.NumberFormat(),它有一个用于选择最小数字的选项(尽管这似乎有点过头):

console.log(new Intl.NumberFormat('en-US', { minimumIntegerDigits: 2}).format(2));

console.log(new Intl.NumberFormat('en-US', { minimumIntegerDigits: 2}).format(59));

答案 2 :(得分:1)

nf()函数应如下所示:

function nf(num){
    if(num < 10){
        return "0"+num;
    }
    return num;
}

console.log(nf(7));
// 07
console.log(nf(11));
// 11

答案 3 :(得分:1)

如果用nf()表示将Number格式化为给定数字string的函数,则可以是它的实现:

function nf(number, digits) {
  var res = number.toString();
  while (res.length < digits) {
    res = "0" + res;
  }
  return res;
}

演示:

function convertSeconds(s) {
  var min = Math.floor(s / 60);
  var sec = s % 60;
  return nf(min, 2) + ':' + nf(sec, 2);
}

function nf(number, digits) {
  var res = number.toString();
  while (res.length < digits) {
    res = "0" + res;
  }
  return res;
}

console.log(nf(4,2));