2011-09-20 106 views
0

在Javascript中,只要我們調用getDate()方法,就會在該月的特定日期返回值1-31。當我在var goal中指定的未來日期大於31時,會在倒數計時器中產生問題,導致倒數計時器輸出「12」,而不是實際保留到未來日期的天數。Javascript getDate()倒數計時器的方法

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 
     }); 
     }); 

任何想法如何解決這個問題?

+0

Date.UTC(年,月,日,時,分,秒,毫秒) 計算從獲得的毫秒值.. – Kris

+0

希望實現倒計時。但在你的例子中,你過去使用日期?有些錯誤還是? –

回答

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" 
    }); 
    */ 
//} 
+0

這在理論上應該是完美的。但是,當我使用它與此倒計時計時器相結合時:http://jquery-countdown.googlecode.com/svn/trunk/index.html它不起作用,數字顯示不穩定。我嘗試了各種修改無濟於事。 這裏是計時器的來源:http://jquery-countdown.googlecode.com/svn/trunk/js/jquery.countdown.js – GoofyBall

+0

@GoofBall:你的意思是:_when我用它與這個倒計時一起使用timer_。你用我的代碼來設置'startTime'選項?或者是什麼? –

+0

是的。我發送的countdown.js文件是使數字翻轉等等的來源。您的代碼旨在將startTime設置爲將來的日期,然後開始倒計時。 – GoofyBall

0

這不是你的代碼的問題 一個確切的修復,但如果你想爲日期的輔助方法,看看sugar.js它的輔助方法主機一樣輕鬆地計算現在和給定日期之間的天差。 看看the features page for all date methods

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

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

daysFromNow()已經是daysUntil() & daysSince()作爲計算在過去或未來的不同別名,daysFromNow()負責的過去和未來:)

和那個變量會給你總天數,即使它超過31天。

+0

有趣,以前從未聽說過。我確實發現datejs也很好。這就像phps日期功能。 – Matt

+0

是真的,但我使用sugarjs的原因很多,是數組/對象/函數,甚至字符串或數字的額外功能...如果我只需要額外的日期,我會發現DateJs太多了...... – Sander

+0

@桑德我仍然需要看看這個。我今天會做一些時間。 – GoofyBall