답변:
내가 찾은 가장 좋은 방법은 다음과 같습니다.
(이 간단한 버전은 양의 정수에만 작동합니다.)
var myNumber = 7;
var formattedNumber = ("0" + myNumber).slice(-2);
console.log(formattedNumber);
십진수의 경우이 코드를 사용할 수 있습니다 (약간 느슨합니다).
var myNumber = 7.5;
var dec = myNumber - Math.floor(myNumber);
myNumber = myNumber - dec;
var formattedNumber = ("0" + myNumber).slice(-2) + dec.toString().substr(1);
console.log(formattedNumber);
마지막으로 음수 가능성을 처리해야하는 경우 부호를 저장하고 숫자의 절대 값에 서식을 적용한 다음 사실 뒤에 부호를 다시 적용하는 것이 가장 좋습니다. 이 방법은 숫자를 총 2 자리로 제한하지 않습니다. 대신 숫자를 소수점 왼쪽 (정수 부분)으로 만 제한합니다. (기호를 결정하는 줄은 여기에 있습니다 ).
var myNumber = -7.2345;
var sign = myNumber?myNumber<0?-1:1:0;
myNumber = myNumber * sign + ''; // poor man's absolute value
var dec = myNumber.match(/\.\d+$/);
var int = myNumber.match(/^[^\.]+/);
var formattedNumber = (sign < 0 ? '-' : '') + ("0" + int).slice(-2) + (dec !== null ? dec : '');
console.log(formattedNumber);
원하는 수의 toLocaleString () 메소드를 사용하십시오. 따라서 숫자 6의 경우 아래와 같이 원하는 결과를 얻을 수 있습니다.
(6).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false})
문자열 '06'을 생성합니다.
(6).toLocaleString(undefined, {minimumIntegerDigits: 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
모든 최신 브라우저에서 사용할 수 있습니다
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);
("0" + (date.getDate())).slice(-2);
숫자 대신 문자열이있는 것 같습니다. 이것을 사용하십시오 :
var num = document.getElementById('input').value,
replacement = num.replace(/^(\d)$/, '0$1');
document.getElementById('input').value = replacement;
예를 들면 다음과 같습니다. http://jsfiddle.net/xtgFp/
빠르고 더러운 하나의 라이너 ....
function zpad(n, len) {
return 0..toFixed(len).slice(2,-n.toString().length)+n.toString();
}
Number.prototype.leftPad = String.prototype.leftPad = function (pad) { return 0..toFixed(pad).slice(2, -this.toString().length) + this.toString(); };
이것은 간단하고 꽤 잘 작동합니다.
function twoDigit(number) {
var twodigit = number >= 10 ? number : "0"+number.toString();
return twodigit;
}
나는 이것이 고대 게시물이라는 것을 알고 있지만 더 유연하고 OO 솔루션 옵션을 제공하고 싶었습니다.
허용되는 답변에 약간의 외삽 법을 적용하고 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"
편집 : 요청한 자릿수보다 긴 숫자가 잘리지 않도록 코드를 추가하십시오.
참고 : 이것은 IE를 제외하고는 더 이상 사용되지 않습니다. padStart()
대신 사용하십시오 .
JavaScript 용 내장 숫자 포맷터는 없지만이를 수행하는 라이브러리가 있습니다.
<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>
이 기능을 사용하면 원하는 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;
};
내 예는 다음과 같습니다.
<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)
간단한 날짜 형식이 필요할 때마다 호출하는 매우 간단한 형식 함수를 작성했습니다. 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;
}
}
ES6 화살표 기능 용으로 업데이트 (거의 모든 최신 브라우저에서 지원, CanIUse 참조 )
const formatNumber = n => ("0" + n).slice(-2);