2017-08-11 90 views
0

我創建了被執行每1秒,輸出當前小時,分鐘和秒在這樣一個跨度的腳本:獲取時間每隔1秒的JavaScript

setInterval(()=>{ 
 
    let date = new Date(); 
 
    let time = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`; 
 
    document.getElementById('foo').innerText = time; 
 
}, 1000);
Time :<span id ='foo'>00:00:00</span>

正如你可以每隔1秒查看一次我正在創建一個新的Date對象。 有沒有更好的方法來實現這一點,而不必每隔1秒重新創建Date對象?

+1

不這麼認爲.. –

+0

更好的辦法......怎麼樣?定義「更好」。爲什麼你想避免創建一個新的日期對象? – Amy

+1

我認爲......這不是問題。 – zynkn

回答

2

您可以只遞增秒現有Date對象:

let date = new Date(); 

setInterval(() => { 
    date.setSeconds(date.getSeconds() + 1); 

    let time = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`; 
    document.getElementById('foo').innerText = time; 
}, 1000); 

但是現在的問題是,

  1. 多少,這實際上將獲得你的表現;和
  2. 執行間隔方法的時間有多確切,以及您的計算日期和實際日期之間隨着時間的推移有多少漂移。您可能想要再次重新同步,例如每小時左右。
+0

除* setInterval *沒有按照指定的時間間隔運行外,所以時鐘會緩慢漂移。這是否「更好」是有爭議的。還不清楚爲什麼將秒設置爲新值會比創建新日期使用更少的資源。 – RobG

+0

@RobG你不只是重複我在答案的後半部分所說的一切嗎? –

+0

雖然這是一個替代方案,但沒有任何跡象表明「更好」,所以不是真正的答案。 :-( – RobG