0

在 Javascript 中,每当我们调用 getDate() 方法时,都会为一个月中的特定日期返回 1-31 的值。当我指定一个var goal大于 31 的未来日期时,这会在我的倒数计时器中产生一个问题,这会导致倒数计时器输出“12”,而不是距离未来日期实际剩余的天数。

  function twoDigits(number) {return (number < 10 ? '0' : '') + number};

        var goal = "Sun January 01 2012 00:00:01";
        goal = new Date(goal);
        var now = new Date();
        var count = new Date(goal.getTime() - now.getTime());
        var day = count.getDate() -1;
        var hour = count.getHours()-1; 
        var format = twoDigits(day) + ":" + twoDigits(hour) + ":" + twoDigits(count.getMinutes()) + ":" + twoDigits(count.getSeconds());
      $(function () {
        $('#counter').countdown({
          image: 'digits.png',
          startTime: format
        });
      });

有什么想法可以解决这个问题吗?

4

2 回答 2

1
function padLeft(str,len,char) {
    len=Number(len)||1;
    char=String(char)||" ";
    for(var i=0;i<len;i++)str=char+str;
    return str.substr(str.length-len);
}

//$(document).ready(function() {
    var goal = "Sun January 01 2011 00:00:01";
    goal = new Date(goal);
    var now = new Date();
    var count = goal.getTime() - now.getTime();
    var sign = count/Math.abs(count);
    count = Math.abs(count);
    var days = Math.floor(count/(24*60*60*1000));
    count -= days*24*60*60*1000;
    var hours = Math.floor(count/(60*60*1000));
    count -= hours*60*60*1000;
    var minutes = Math.floor(count/(60*1000));
    count -= minutes*60*1000;
    var secs = Math.floor(count/1000);

    var startTime = days +":"+ padLeft(hours,2,"0") +":"+ padLeft(minutes,2,"0") +":"+ padLeft(secs,2,"0");
    alert(startTime);
    /*
    $("#counter").countdown({
        image: 'digits.png',
        startTime: startTime,
        format: "dd:hh:mm:ss"
    });
    */ 
//}
于 2011-09-20T09:59:09.010 回答
0

这不是针对您的代码问题的精确解决方案,但是如果您想要日期的辅助方法,请查看Sugar.js ,它有许多辅助方法,例如轻松计算从现在到给定日期之间的天数差异。查看所有日期方法的功能页面

例如,您可以使用此功能:

var goal = "Sun January 01 2011 00:00:01";
goal = new Date(goal);
var difference = goal.daysFromNow();

daysFromNow()已经是daysUntil()&的别名,daysSince()用于计算过去或未来的差异,daysFromNow() 立即处理过去和未来 :)

这个变量会给你总天数,即使它超过 31 天。

于 2011-09-20T09:47:12.483 回答