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() + "&nbsp;" + diff.getMinutes() + "&nbsp;" +     diff.getSeconds());

}, 1000);

});

</script>

谢谢大家

您可以使用日期库,或像这样的简单填充函数:

function padNumber(num, size){
   var s = "0000000000" + num;
   return s.substr(s.length - size);
}

因此对于您的代码:

$("#countdownTimer").html(padNumber(diff.getHours(), 2) + "&nbsp;" 
        + padNumber(diff.getMinutes(), 2) + "&nbsp;" 
        + 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);