2016-12-31 8 views
0

私は毎秒1回時計を更新していますが、時刻はnew Dateオブジェクトから来ていますが、最初にsetIntervalという初期時刻を追加するか、毎秒new Dateを作成して更新するのが良いでしょうか時間。時間を更新するにはどうすればよいですか?新しい日付またはsetInverval?

両方とも動作しますが、新しいオブジェクトを1秒ごとに作成するのは、setInterval()メソッドでは、時間がたつと3つの関数が実行されるため、かなり少量のリソースを使用することになると思います。私はシステムの時間変化が(タイムゾーンまたは夏時間調整を変更する)ときに変化すると仮定したように、それは、new Dateオブジェクトを使用有する利点を見ることができる

.getHours().getMinutes().getSeconds())。

setInverval()を使用する方が効率的ですか、毎回new Dateオブジェクトを作成するのと同じくらい多くのリソースを使用しますか?

答えて

2

setInterval(function myFunc(){}, 1000)が保証しない、そのmyFuncが毎秒呼び出されます。実際、その体は大きく変わる可能性があります。たとえば、Chromeでは、タブを変更すると、最初のタブに戻るまで間隔が大幅に遅くなります。
new Date()をそのまま使用してください。
http://javascript.info/tutorial/settimeout-setinterval

0

使用これは、それはあなたのページがあなたは、単に新しいDate()と次に、getHours()、getMinutes、getSeconds機能を使用することができます読み込ま取得した後、一度だけで時刻を表示するためには、あなたを助ける参照してください。ページをリフレッシュせずに更新された時間を表示するには、setInterval()とnew date()の両方の機能を併用する必要があります。設定間隔内に新しいdate()を使用する必要があります。あなたはそれがあなたの時間の更新を一時停止しませんコードします。

function pad(str, max) { 
 

 
    return ((str.length < max) ? pad("0" + str, max) : str); 
 
} 
 
var d; 
 
setInterval(function myFunc() { 
 
    d = new Date(); 
 
    document.getElementById("date").innerText = (pad(d.getHours().toString(), 2) + ":" + pad(d.getMinutes().toString(), 2) + ":" + pad(d.getSeconds().toString(), 2)); 
 
}, 1000);
<div id="date"></div>

+0

これが答えではありません。 – RobG

+0

あなたのコメントの理由を知っているかもしれません@RobG – vijay

+0

それは質問に答えません。 – RobG

関連する問題