Как использовать NumberFormat в Javascript? - PullRequest
2 голосов
/ 25 марта 2019

Мне бы хотелось, чтобы мой таймер обратного отсчета показывал двузначные цифры, например, «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 ]

2 голосов
/ 25 марта 2019

Вы можете использовать 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 голосов
/ 25 марта 2019

Для заполнения нулей вы можете сделать

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 голос
/ 25 марта 2019

Если под 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));
1 голос
/ 25 марта 2019

Функция nf() должна быть такой:

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

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