2011-08-01 7 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

日付 - 日付はミリ秒を返します。リクエストに1秒かかるとしますので、timediff = 1000です。

elapsed = Math.round(timeDiff/1000); 

秒にミリ秒に変換されます:あなたは、私はあなたがこれをしたいと思うあなたが望むもの40とない1000 % 60、...

を行います。

モジュロ演算子を使用すると、後のように見えるものではありません除算の余りを返し% ...

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

関連する問題