Tôi muốn định dạng một số để có hai chữ số. Vấn đề được gây ra khi 0
- 9
được thông qua, vì vậy tôi cần nó được định dạng thành 00
- 09
.
Có một số định dạng trong JavaScript?
Tôi muốn định dạng một số để có hai chữ số. Vấn đề được gây ra khi 0
- 9
được thông qua, vì vậy tôi cần nó được định dạng thành 00
- 09
.
Có một số định dạng trong JavaScript?
Câu trả lời:
Phương pháp tốt nhất tôi tìm thấy là một cái gì đó như sau:
(Lưu ý rằng phiên bản đơn giản này chỉ hoạt động cho các số nguyên dương)
var myNumber = 7;
var formattedNumber = ("0" + myNumber).slice(-2);
console.log(formattedNumber);
Đối với số thập phân, bạn có thể sử dụng mã này (mặc dù nó hơi cẩu thả).
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);
Cuối cùng, nếu bạn phải đối phó với khả năng của số âm, tốt nhất là lưu trữ dấu hiệu, áp dụng định dạng cho giá trị tuyệt đối của số đó và áp dụng lại dấu hiệu sau thực tế. Lưu ý rằng phương pháp này không giới hạn số lượng thành 2 chữ số. Thay vào đó, nó chỉ giới hạn số ở bên trái của số thập phân (phần nguyên). (Dòng xác định dấu hiệu đã được tìm thấy ở đây ).
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()
phương pháp w3schools.com/jsref/jsref_toprecision.asp
Sử dụng phương thức toLocaleString () với bất kỳ số nào. Vì vậy, đối với số 6, như được thấy dưới đây, bạn có thể nhận được kết quả mong muốn.
(6).toLocaleString('en-US', {minimumIntegerDigits: 2, useGrouping:false})
Sẽ tạo chuỗi '06'.
(6).toLocaleString(undefined, {minimumIntegerDigits: 2})
Đây là một chức năng đệm số đơn giản mà tôi thường sử dụng. Nó cho phép bất kỳ số lượng đệm.
function leftPad(number, targetLength) {
var output = number + '';
while (output.length < targetLength) {
output = '0' + output;
}
return output;
}
Ví dụ:
leftPad(1, 2) // 01
leftPad(10, 2) // 10
leftPad(100, 2) // 100
leftPad(1, 3) // 001
leftPad(1, 8) // 00000001
Trong tất cả các trình duyệt hiện đại, bạn có thể sử dụng
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);
Bạn có thể làm:
function pad2(number) {
return (number < 10 ? '0' : '') + number
}
Thí dụ:
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 />');
Kết quả:
00
01
02
10
15
Có vẻ như bạn có thể có một chuỗi, thay vì một số. dùng cái này:
var num = document.getElementById('input').value,
replacement = num.replace(/^(\d)$/, '0$1');
document.getElementById('input').value = replacement;
Đây là một ví dụ: http://jsfiddle.net/xtgFp/
Nhanh chóng và bẩn một lót ....
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(); };
Điều này là đơn giản và hoạt động khá tốt:
function twoDigit(number) {
var twodigit = number >= 10 ? number : "0"+number.toString();
return twodigit;
}
Đây là một giải pháp rất đơn giản mà làm việc tốt cho tôi.
Đầu tiên khai báo một biến để giữ số của bạn.
var number;
Bây giờ chuyển đổi số thành một chuỗi và giữ nó trong một biến khác;
var numberStr = number.toString();
Bây giờ bạn có thể kiểm tra độ dài của chuỗi này, nếu nó nhỏ hơn mong muốn, bạn có thể nối thêm "không" vào lúc đầu.
if(numberStr.length < 2){
number = '0' + number;
}
Bây giờ sử dụng số như mong muốn
console.log(number);
Phiên bản cải tiến của câu trả lời trước
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));
Tôi biết đây là một bài viết cổ, nhưng tôi muốn cung cấp tùy chọn giải pháp OO linh hoạt hơn.
Tôi đã ngoại suy câu trả lời được chấp nhận một chút và mở rộng Number
đối tượng javascript để cho phép đệm không điều chỉnh:
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"
Chỉnh sửa: Thêm mã để ngăn việc cắt các số dài hơn các chữ số bạn yêu cầu.
LƯU Ý: Đây là lỗi thời trong tất cả trừ IE. Sử dụng padStart()
thay thế.
Không có trình định dạng số tích hợp cho JavaScript, nhưng có một số thư viện thực hiện việc này:
Nếu bạn muốn giới hạn các chữ số của mình cùng một lúc:
function pad2(number) {
number = (number < 10 ? '0' : '') + number;
number = number.substring(0,2);
return number;
}
Điều này cũng sẽ cắt bất kỳ giá trị nào vượt quá hai chữ số. Tôi đã mở rộng điều này theo giải pháp của 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>
Đây là một giải pháp đệ quy đơn giản, hoạt động với mọi số chữ số.
function numToNDigitStr(num, n)
{
if(num >= Math.pow(10, n - 1)) { return num; }
return "0" + numToNDigitStr(num, n-1);
}
Nếu bạn không có lodash trong dự án của mình, sẽ là quá mức cần thiết để thêm toàn bộ thư viện chỉ để sử dụng một chức năng. Đây là giải pháp tinh vi nhất cho vấn đề của bạn mà tôi từng thấy.
_.padStart(num, 2, '0')
Đây là phiên bản của tôi. Có thể dễ dàng thích nghi với các kịch bản khác.
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();
}
Với chức năng này, bạn có thể in với bất kỳ n chữ số nào bạn muố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;
};
ví dụ của tôi sẽ là :
<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');
Regex là tốt nhất.
AS kiểu dữ liệu trong Javascript được xác định một cách linh hoạt, nó xử lý 04 là 4 Sử dụng câu lệnh có điều kiện nếu giá trị nhỏ hơn 10 rồi thêm 0 trước nó bằng cách tạo chuỗi E.g,
var x=4;
x = x<10?"0"+x:x
console.log(x); // 04
Tôi đã xây dựng một chức năng định dạng khá đơn giản mà tôi gọi bất cứ khi nào tôi cần một ngày đơn giản được định dạng. Nó xử lý định dạng các chữ số đơn thành hai chữ số khi chúng nhỏ hơn 10. Nó khởi động một ngày được định dạng làSat Sep 29 2018 - 00:05:44
Hàm này được sử dụng như một phần của biến utils nên được gọi là:
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;
}
}
Đã cập nhật cho các chức năng mũi tên ES6 (Được hỗ trợ trong hầu hết các trình duyệt hiện đại, xem CanIUse )
const formatNumber = n => ("0" + n).slice(-2);