2011-08-01 57 views
3

我想時間Ajax請求,但我得到隨機經過時間:的Javascript計時器不正確

startTime = new Date(); 

$.ajax({ 
... 
success: function(response){ 

    endTime = new Date(); 
    timeDiff = endTime - startTime; 
    elapsed = Math.round(timeDiff % 60); 

    alert(elapsed + ' seconds elapsed'); 
} 
} 

...喜歡2秒後,我得到36秒時,或59秒,秒或1秒

我在這裏做錯了什麼?而不是%

%

回答

2

使用/modulo操作。

正確的代碼來計算日期之間的秒數:

(endTime.getTime() - startTime.getTime())/1000 
+0

現在我總是150和160秒之間得到 –

+0

看到我更新與答案正確的代碼 –

0

添加+標誌兩個版本的new Date()

startTime = +new Date(); 

這將保證該日期轉換爲數值值(時間戳),你可以用減號操作。它看起來沒有工作,但我不知道在瀏覽器/版本實現中會做些什麼。

也正如其他答案中提到的,您需要將結果(以毫秒爲單位)除以1000以獲得秒數。

1

日期 - 日期返回毫秒。可以說你的請求需要一秒鐘,所以timediff = 1000。然後,您做了1000 % 60,這是40,而不是你想要的...

我想你想要這樣的:

elapsed = Math.round(timeDiff/1000); 

這將毫秒轉換爲秒。

模運算符%返回除法運算這是不是你似乎是東西后的剩餘...

http://en.wikipedia.org/wiki/Modulo_operation