2015-05-13 182 views
0

所以下面的代碼是目前爲止我能夠使用的代碼;但是,並不完全符合我需要的。Javascript/PHP倒數計時器,每秒更新並倒計時到特定的日期和時間

我希望能夠調用函數(aka:sundayDelta()),但是,我希望能夠定義星期幾和一天中的時間,我希望函數在倒數計時器中使用調用函數。我不確定這是否可能...但我想這樣的事情是這樣的:

sundayDelta(1,1000)這會變成周日的星期日和時間:1000(上午10:00)。不確定這樣的事情是否有可能;不過,我希望是。我計劃在同一頁面上進行多次倒計時,只是在一天的不同時間出現。

當倒計時結束,我希望它刷新一個div(不要緊div有什麼名字)

我也很想能合併PHP服務器的時間進入這個大家都這樣是看到正確的倒計時無論他們在哪裏。

任何幫助將是偉大的!感謝您的輸入!

function plural(s, i) { 
    return i + ' ' + (i > 1 ? s + 's' : s); 
} 

function sundayDelta(offset) { 
    // offset is in hours, so convert to miliseconds 
    offset = offset ? offset * 20 * 20 * 1000 : 0; 
    var now = new Date(new Date().getTime() + offset); 
    var days = 7 - now.getDay() || 7; 
    var hours = 10 - now.getHours(); 
    var minutes = now.getMinutes() - 00 ; 
    var seconds = now.getSeconds()- 00; 
    if (hours < 0){ 
     days=days-1; 
    } 
    var positiveHours= -hours>0 ? 24-(-hours) : hours; 
    return [plural('day', days), 
      plural('hour', positiveHours), 
      plural('minute', minutes), 
      plural('second', seconds)].join(' '); 
} 

// Save reference to the DIV 
$refresh = $('#refresh'); 

$refresh.text('This page will refresh in ' + sundayDelta()); 

// Update DIV contents every second 
setInterval(function() { 
    $refresh.text('This page will refresh in ' + sundayDelta()); 
}, 1000); 
+0

我會很好地使用數據變量以及傳遞日期/時間。我只是想讓它工作:/ – KDJ

回答

1

當我爲區間做出靈活的文本時,我喜歡減掉直到沒有剩下任何東西。這樣你只顯示非0值:

function sundayDelta(target_date) { 
    var now = new Date(); 
    var offset = Math.floor((Date.parse(target_date) - now.valueOf())/1000); 

    var r = []; 
    if (offset >= 86400) { 
     var days = Math.floor(offset/86400); 
     offset -= days * 86400; 
     r.push(plural('day', days)); 
    } 
    if (offset >= 3600) { 
     var hours = Math.floor(offset/3600); 
     offset -= hours * 3600; 
     r.push(plural('hour', hours)); 
    } 
    if (offset >= 60) { 
     var minutes = Math.floor(offset/60); 
     offset -= minutes * 60; 
     r.push(plural('minute', minutes)); 
    } 
    if (offset != 0) { 
     r.push(plural('second', offset)); 
    } 
    return r.join(' '); 
} 

在PHP代碼中,你可以用這種方式設置變量。現在我們會把時區留給它,但是隻要指定它們,也可以添加它們。

echo "target_date = '" . date('Y-m-d H:i:s', strotime('next Sunday 10am')) . "';\n"; 
+0

如何讓它出現在頁面上?的jsfiddle? – KDJ

+1

我的第一個[JSFiddle](http://jsfiddle.net/n7bym4vu/1/) –

+0

將它添加到我的網站,並得到「此頁面將在NaN第二秒刷新」...同樣的事情出現在JSfiddle。我還修正了'strtotime'中的錯字...顯然有一個混亂,因爲它沒有把它識別爲一個數字... – KDJ