Je veux formater un numéro pour qu’il comporte deux chiffres. Le problème est dû au passage de 0
9
, il me faut donc le formater à 00
– 09
.
Existe-t-il un formateur de nombres en JavaScript?
La meilleure méthode que j’ai trouvée est la suivante (notez que cette version simple ne fonctionne que pour les entiers positifs):
var myNumber = 7; var formattedNumber = ("0" + myNumber).slice(-2); console.log(formattedNumber);
Si le nombre est supérieur à 9, convertissez le nombre en chaîne (cohérence). Sinon, ajoutez un zéro.
function n(n){ return n > 9 ? "" + n: "0" + n; } n( 9); //Returns "09" n(10); //Returns "10" n(999);//Returns "999"
Utilisez la méthode toLocaleSsortingng () dans n’importe quel nombre. Donc, pour le numéro 6, comme on le voit ci-dessous, vous pouvez obtenir les résultats souhaités.
(6).toLocaleSsortingng('en-US', {minimumIntegerDigits: 2, useGrouping:false})
Générera la chaîne ’06’.
Voici une fonction simple de remplissage de nombres que j’utilise habituellement. Il permet n’importe quelle quantité de rembourrage.
function leftPad(number, targetLength) { var output = number + ''; while (output.length < targetLength) { output = '0' + output; } return output; }
Exemples:
leftPad(1, 2) // 01 leftPad(10, 2) // 10 leftPad(100, 2) // 100 leftPad(1, 3) // 001 leftPad(1, 8) // 00000001
Dans tous les navigateurs modernes, vous pouvez utiliser
numberStr.padStart(2, "0");
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Ssortingng/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 numSsortingng = num.toSsortingng(); var paddedNum = zeroPad(numSsortingng); console.log(paddedNum); } );
("0" + (date.getMonth() + 1)).slice(-2); ("0" + (date.getDay())).slice(-2);
Tu peux faire:
function pad2(number) { return (number < 10 ? '0' : '') + number }
Exemple:
document.write(pad2(0) + '
'); document.write(pad2(1) + '
'); document.write(pad2(2) + '
'); document.write(pad2(10) + '
'); document.write(pad2(15) + '
');
Résultat:
00 01 02 10 15
Il semble que vous ayez une chaîne au lieu d’un chiffre. utilisez ceci:
var num = document.getElementById('input').value, replacement = num.replace(/^(\d)$/, '0$1'); document.getElementById('input').value = replacement;
Voici un exemple: http://jsfiddle.net/xtgFp/
C’est simple et fonctionne plutôt bien:
function twoDigit(number) { var twodigit = number >= 10 ? number : "0"+number.toSsortingng(); return twodigit; }
Un revêtement rapide et sale ….
function zpad(n, len) { return 0..toFixed(len).slice(2,-n.toSsortingng().length)+n.toSsortingng(); }
Je sais que c’est un article ancien, mais je voulais offrir une solution plus flexible et une solution OO.
J’ai extrapolé la réponse acceptée un peu et l’object Number
de javascript étendu pour permettre le remplissage zéro réglable:
Number.prototype.zeroPad = function(digits) { var loop = digits; var zeros = ""; while (loop) { zeros += "0"; loop--; } return (this.toSsortingng().length > digits) ? this.toSsortingng() : (zeros + this).slice(-digits); } var v = 5; console.log(v.zeroPad(2)); // returns "05" console.log(v.zeroPad(4)); // returns "0005"
Il n’y a pas de formateur de nombres intégré pour JavaScript, mais certaines bibliothèques accomplissent ceci:
Version améliorée de la réponse précédente
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));
ou
function zpad(n,l){ return rep(ln.toSsortingng().length, '0') + n.toSsortingng(); }
avec
function rep(len, chr) { return new Array(len+1).join(chr); }
Si vous voulez limiter vos chiffres en même temps:
function pad2(number) { number = (number < 10 ? '0' : '') + number; number = number.substring(0,2); return number; }
Cela permettrait également de couper toute valeur supérieure à deux chiffres. Je l'ai étendu sur la solution de fanaur.
La réponse de @ Lifehack m’a été très utile. où je pense que nous pouvons le faire en une seule ligne pour les nombres positifs
Ssortingng(input).padStart(2, '0');
Voici une solution récursive simple qui fonctionne pour un nombre quelconque de chiffres.
function numToNDigitStr(num, n) { if(num >= Math.pow(10, n - 1)) { return num; } return "0" + numToNDigitStr(num, n-1); }
Voici ma version Peut facilement être adapté à d’autres scénarios.
function setNumericFormat(value) { var length = value.toSsortingng().length; if (length < 4) { var prefix = ""; for (var i = 1; i <= 4 - length; i++) { prefix += "0"; } return prefix + value.toString(); } return value.toString(); }
Si vous n’avez pas lodash dans votre projet, il serait exagéré d’append la bibliothèque entière uniquement pour utiliser une fonction. C’est la solution la plus sophistiquée de votre problème que j’ai jamais vue.
_.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); }
Pour quiconque veut avoir des différences de temps et avoir des résultats qui peuvent être négatifs, voici un bon exemple. 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); } }
avec cette fonction, vous pouvez imprimer avec n chiffres que vous voulez
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; };
mon exemple serait :
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)
`${number}`.replace(/^(\d)$/, '0$1');
Regex est le meilleur.
Le type de données AS en Javascript est déterminé dynamicment. Il traite 04 comme 4
var x=4; x = x<10?"0"+x:x console.log(x); // 04