Jquery 日期格式 - 双位数
Jquery Date Format - Double Digits
早上好,有谁知道如何修改这个倒计时代码,让它始终以两位数输出,即 01 01 01,而不是 1 1 1
<script>
$(document).ready(function () {
setInterval(function () {
var now = new Date();
var day = now.getDay();
var end;
if(day >= 1 && day <= 5) {
end = new Date(now.getYear(), now.getMonth(), day, 14, 0, 0, 0);
} else {
end = new Date(now.getYear(), now.getMonth(), day, 13, 0, 0, 0);
}
var timeleft = end.getTime() - now.getTime();
ar diff = new Date(timeleft);
$("#countdownTimer").html(diff.getHours() + " " + diff.getMinutes() + " " + diff.getSeconds());
}, 1000);
});
</script>
谢谢大家
您可以使用日期库,或像这样的简单填充函数:
function padNumber(num, size){
var s = "0000000000" + num;
return s.substr(s.length - size);
}
因此对于您的代码:
$("#countdownTimer").html(padNumber(diff.getHours(), 2) + " "
+ padNumber(diff.getMinutes(), 2) + " "
+ padNumber(diff.getSeconds(), 2));
注意: 这个简单的函数不检查 num 本身的长度,因此指定太小的大小会截断它(但你明白了).
虽然不是防弹,但比此处提供的 link 上的 3 个最佳选项更快:How can I pad a value with leading zeros?
jsPerf: http://jsperf.com/left-zero-pad/14
或者如果你想要更简单、更快的(但仅限 2 位数)
function pad2(num){
if(num < 10){
return "0" + num;
}
return "" + num;
}
注意:最后一个版本 soooo 很快,它让其他选项失效(大约快 20 倍)。
这个简单的函数应该可以解决问题。
function makeTwoDigit(num)
{
num = num.toString();
if(num.length==1)
return "0"+num;
return num;
};
setInterval(function () {
var now = new Date();
var day = now.getDay();
var end;
if(day >= 1 && day <= 5) {
end = new Date(now.getYear(), now.getMonth(), day, 14, 0, 0, 0);
} else {
end = new Date(now.getYear(), now.getMonth(), day, 13, 0, 0, 0);
}
var timeleft = end.getTime() - now.getTime();
var diff = new Date(timeleft);
console.log(makeTwoDigit(diff.getHours()) + " " + makeTwoDigit(diff.getMinutes()) + " " + makeTwoDigit(diff.getSeconds()));
}, 1000);
早上好,有谁知道如何修改这个倒计时代码,让它始终以两位数输出,即 01 01 01,而不是 1 1 1
<script>
$(document).ready(function () {
setInterval(function () {
var now = new Date();
var day = now.getDay();
var end;
if(day >= 1 && day <= 5) {
end = new Date(now.getYear(), now.getMonth(), day, 14, 0, 0, 0);
} else {
end = new Date(now.getYear(), now.getMonth(), day, 13, 0, 0, 0);
}
var timeleft = end.getTime() - now.getTime();
ar diff = new Date(timeleft);
$("#countdownTimer").html(diff.getHours() + " " + diff.getMinutes() + " " + diff.getSeconds());
}, 1000);
});
</script>
谢谢大家
您可以使用日期库,或像这样的简单填充函数:
function padNumber(num, size){
var s = "0000000000" + num;
return s.substr(s.length - size);
}
因此对于您的代码:
$("#countdownTimer").html(padNumber(diff.getHours(), 2) + " "
+ padNumber(diff.getMinutes(), 2) + " "
+ padNumber(diff.getSeconds(), 2));
注意: 这个简单的函数不检查 num 本身的长度,因此指定太小的大小会截断它(但你明白了).
虽然不是防弹,但比此处提供的 link 上的 3 个最佳选项更快:How can I pad a value with leading zeros?
jsPerf: http://jsperf.com/left-zero-pad/14
或者如果你想要更简单、更快的(但仅限 2 位数)
function pad2(num){
if(num < 10){
return "0" + num;
}
return "" + num;
}
注意:最后一个版本 soooo 很快,它让其他选项失效(大约快 20 倍)。
这个简单的函数应该可以解决问题。
function makeTwoDigit(num)
{
num = num.toString();
if(num.length==1)
return "0"+num;
return num;
};
setInterval(function () {
var now = new Date();
var day = now.getDay();
var end;
if(day >= 1 && day <= 5) {
end = new Date(now.getYear(), now.getMonth(), day, 14, 0, 0, 0);
} else {
end = new Date(now.getYear(), now.getMonth(), day, 13, 0, 0, 0);
}
var timeleft = end.getTime() - now.getTime();
var diff = new Date(timeleft);
console.log(makeTwoDigit(diff.getHours()) + " " + makeTwoDigit(diff.getMinutes()) + " " + makeTwoDigit(diff.getSeconds()));
}, 1000);