Відповіді:
Найкращий метод, який я знайшов, - це щось на зразок наступного:
(Зверніть увагу, що ця проста версія працює лише для натуральних чисел)
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);
Нарешті, якщо вам доводиться стикатися з можливістю від’ємних чисел, найкраще зберігати знак, застосовувати форматування до абсолютного значення числа та повторно застосовувати знак після факту. Зауважте, що цей метод не обмежує число двома цифрами. Натомість він обмежує лише число зліва від десяткової (ціла частина). (Лінія , яка визначає знак був знайдений тут ).
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);
.toPrecision()
метод w3schools.com/jsref/jsref_toprecision.asp
Використовуйте метод 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);
Ви можете зробити:
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 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;
}
Ось дуже просте рішення, яке добре спрацювало для мене.
Спочатку оголосіть змінну для зберігання вашого номера.
var number;
Тепер перетворіть число в рядок і потримайте його в іншій змінній;
var numberStr = number.toString();
Тепер ви можете перевірити довжину цього рядка, якщо він менший від бажаного, ви можете додати "нуль" на початку.
if(numberStr.length < 2){
number = '0' + number;
}
Тепер використовуйте число за бажанням
console.log(number);
Удосконалена версія попередньої відповіді
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));
Я знаю, що це давня публікація, але я хотів запропонувати більш гнучку та OO варіант рішення.
Я трохи екстраполював прийняту відповідь і розширив Number
об’єкт javascript, щоб дозволити регульовані нульові прокладки:
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>
Ось просте рекурсивне рішення, яке працює для будь-якої кількості цифр.
function numToNDigitStr(num, n)
{
if(num >= Math.pow(10, n - 1)) { return num; }
return "0" + numToNDigitStr(num, n-1);
}
Якщо у вашому проекті немає лодашу, буде надлишком додати всю бібліотеку лише для використання однієї функції. Це найскладніше рішення вашої проблеми, що я коли-небудь бачив.
_.padStart(num, 2, '0')
Ось моя версія. Може легко адаптуватися до інших сценаріїв.
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();
}
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);
}
}
за допомогою цієї функції ви можете друкувати будь-які 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)
`${number}`.replace(/^(\d)$/, '0$1');
Регекс - найкращий.
Як тип даних у Javascript визначається динамічно, він розглядає 04 як 4 Використовуйте умовне твердження, якщо значення менше 10, а потім додайте 0 до нього, зробивши його рядком E.g,
var x=4;
x = x<10?"0"+x:x
console.log(x); // 04
Я створив досить просту функцію форматування, яку дзвоню, коли мені потрібна проста форматування дати. Він стосується форматування одноцифрових та двозначних цифр, коли їх менше 10. У ньому починається дата, відформатована якSat Sep 29 2018 - 00:05:44
Ця функція використовується як частина змінної утиліти, тому вона називається так:
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);