Я хочу отформатировать число, чтобы иметь две цифры. Проблема возникает при 0 - 9, поэтому мне нужно отформатировать ее до 00 - 09.
Есть ли формат форматирования в JavaScript?
 Я хочу отформатировать число, чтобы иметь две цифры. Проблема возникает при 0 - 9, поэтому мне нужно отформатировать ее до 00 - 09.
Есть ли формат форматирования в JavaScript?
Лучший метод, который я нашел, выглядит следующим образом (обратите внимание, что эта простая версия работает только для целых положительных чисел):
var myNumber = 7;
var formattedNumber = ("0" + myNumber).slice(-2);
console.log(formattedNumber);Если число больше 9, преобразуйте число в строку (согласованность). В противном случае добавьте нуль.
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})
Будет генерировать строку '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
Во всех современных браузерах вы можете использовать
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);
  }
);("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
Кажется, у вас может быть строка, а не число. использовать этот:
var num = document.getElementById('input').value,
    replacement = num.replace(/^(\d)$/, '0$1');
document.getElementById('input').value = replacement;
Вот пример: http://jsfiddle.net/xtgFp/
Это просто и работает очень хорошо:
function twoDigit(number) {
  var twodigit = number >= 10 ? number : "0"+number.toString();
  return twodigit;
}
Быстрый и грязный один вкладыш....
function zpad(n, len) {
  return 0..toFixed(len).slice(2,-n.toString().length)+n.toString();
}
Я знаю, что это древний пост, но я хотел бы предложить более гибкое решение для OO.
 Я экстраполировал принятый ответ и расширил объект 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;
console.log(v.zeroPad(2)); // returns "05"
console.log(v.zeroPad(4)); // returns "0005"Ответ @Lifehack был очень полезен для меня; где я думаю, что мы можем сделать это в одной строке для положительных чисел
 String(input).padStart(2, '0');
Для JavaScript нет встроенного форматирования чисел, но есть несколько библиотек, которые выполняют это:
Улучшенная версия предыдущего ответа
function atLeast2Digit(n){
    n = parseInt(n); //ex. if already passed '05' it will be converted to number 5
    var ret = n > 9 ? "" + n: "0" + n;
    return ret;
}
alert(atLeast2Digit(5));или
function zpad(n,l){
   return rep(l-n.toString().length, '0') + n.toString();
}
с
function rep(len, chr) { 
   return new Array(len+1).join(chr);
}
Если вы хотите одновременно ограничить свои цифры:
function pad2(number) {
  number = (number < 10 ? '0' : '') + number;
  number = number.substring(0,2);
  return number;
}
Это также сократит любое значение, превышающее две цифры. Я распространяю это на решение fanaur.
<html>
    <head>
        <script src="http://code.jquery.com/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>
Здесь простое рекурсивное решение, которое работает для любого количества цифр.
function numToNDigitStr(num, n)
{
    if(num >=  Math.pow(10, n - 1)) { return num; }
    return "0" + numToNDigitStr(num, n-1);
}
Вот моя версия. Может быть легко адаптирован к другим сценариям.
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 в вашем проекте, будет излишним, чтобы добавить всю библиотеку только для использования одной функции. Это самое сложное решение вашей проблемы, которое я когда-либо видел.
_.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);
}
Для тех, кто хочет иметь временные различия и есть результаты, которые могут принимать отрицательные числа, здесь хороший. pad (-3) = "03", pad (-2) = "-02", pad (-234) = "-234"
pad = function(n){
  if(n >= 0){
    return n > 9 ? "" + n : "0" + n;
  }else{
    return n < -9 ? "" + n : "-0" + Math.abs(n);
  }
}
мой пример будет:
<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)
с помощью этой функции вы можете печатать с любыми n цифрами, которые вы хотите
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;
};
 '${number}'.replace(/^(\d)$/, '0$1');
Regex - лучшее.
AS тип данных в Javascript определяется динамически, он рассматривает 04 как 4 Использовать условный оператор, если значение меньше 10, а затем добавить 0 перед ним, сделав его строкой Eg,
var x=4;
  x = x<10?"0"+x:x
 console.log(x); // 04
 Я построил довольно простую функцию формата, которую я вызываю всякий раз, когда мне нужна простая форматированная дата. Он имеет дело с форматированием отдельных цифр до двузначных цифр, когда они меньше 10. Он выдает дату, отформатированную как Sat Sep 29 2018 - 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;
  }
}
Вот очень простое решение, которое сработало для меня.
Сначала объявите переменную для хранения вашего номера.
var number;
Теперь преобразуем число в строку и удерживаем его в другой переменной;
var numberStr = number.toString();
Теперь вы можете проверить длину этой строки, если она меньше желаемого, вы можете добавить "ноль" в начале.
if(numberStr.length < 2){
      number = '0' + number;
}
Теперь используйте номер по желанию
print(number);