0

Javascript では、getDate() メソッドを呼び出すたびに、月の特定の日に 1 ~ 31 の値が返されます。これにより、31 より大きい将来の日付を指定すると、カウントダウン タイマーに問題が発生します。var goalこれにより、カウントダウン タイマーは、将来の日付までの実際の残り日数ではなく「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 に答える