2012-03-09 50 views
0

我有一個小腳本,它給了我在JavaScript中兩個日期之間的秒差(日期從php導入)。javascript datediff檢查

它工作正常,檢查頁面加載日期。

<script> 
// convert php dates into javascript 
var t = "<? echo $rs6[logout_timer] ?>".split(/[- :]/); 
var t2 = "<? echo $now ?>".split(/[- :]/); 
var d = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]); 
var d2 = new Date(t2[0], t2[1]-1, t2[2], t2[3], t2[4], t2[5]); 

// get the difference in seconds 
var dif = d.getTime() - d2.getTime(); 
var secs = dif/1000; 

if (secs < -60) { 
    document.getElementById("logout").innerHTML = "more than 60 secs have passed"; 
    } else { 
    document.getElementById("logout").innerHTML = "under 60 seconds"; 
    } 
</script> 

我需要什麼,雖然,是這不只是在頁面加載運行,並檢查每一秒。我怎樣才能調整我的腳本來做到這一點?

+0

你怎麼從服務器使用當前時間? – 2012-03-09 21:54:08

回答

0

就可以使用strtotime

$ts1 = strtotime($rs6[logout_timer]); 
$ts2 = strtotime($now); 

$seconds_diff = $ts1 - $ts2; 
0

使用超時,我曾與一個setTimeout表明它,但你可以使用setInterval

var t = "<? echo $rs6[logout_timer] ?>".split(/[- :]/); 
var d = new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]); 

function checkElapsedTime() { 
    var now = new Date(); 
    var secs = (now.getTime() - d.getTime()) /1000; 
    if (secs > 60) { 
     document.getElementById("logout").innerHTML = "more than 60 secs have passed"; 
    } else { 
     document.getElementById("logout").innerHTML = "under 60 seconds"; 
    }  
    setTimeout(checkElapsedTime, 1000); 
} 
checkElapsedTime(); 
+0

我不知道爲什麼,但它顯示'secs'爲28884.00和巨大的數字,當日期差異真的只是說一秒鐘。 – user1022585 2012-03-09 22:28:52

+0

好吧,我想出了爲什麼。因爲一個從服務器取的日期和其他日期是從JavaScript(本地) – user1022585 2012-03-09 22:42:56

+0

@ user1022585是的,你有沒有注意到我評論了這個問題(你爲什麼要使用當前時間從服務器?)我不能去不知道如何使用它的細節。理想情況下,你不要混合使用服務器和客戶端,這可能是一個巨大的混亂。但在某些情況下,你必須。發生這種情況時,請確保您正在使用時區獨立的時間戳。 – 2012-03-09 23:31:33

0

將你的代碼包裝在一個函數中,然後用不時地調用它。下面的示例認爲該函數將被命名爲countdown

setInterval(countdown, 1000); // run every 1000ms 

注意:你不需要使用PHP來獲取d2。只需使用new Date()即可在JavaScript中獲取當前日期。