2016-12-31 31 views
0

我每秒更新一次时钟,时间来自new Date对象,但我想知道是否最好在setInterval的基础上增加一个初始时间,或者每秒创建一个new Date并使用该对象更新时间。我应该如何更新时间?新的日期或setInverval?

他们都工作,但我想知道如果它负责将创建新的对象每一秒,因为我相信setInterval()方法将使用资源要小得多量,因为越来越时候,三个功能被执行。 (.getHours().getMinutes().getSeconds()

我可以看到在具有它使用new Date对象,如我假定当系统时间的变化(改变时区或夏时制的调整),将改变的优点。

那么使用setInverval()或者它是否会使用与每次创建new Date对象一样多的资源会更高效?

回答

2

setInterval(function myFunc(){}, 1000)不保证,即myFunc将被调用每秒。事实上,这个inteval可能会有很大的不同。例如,在Chrome中,如果更改标签,时间间隔会减慢很多,直到您返回到初始标签。
所以继续使用new Date()
http://javascript.info/tutorial/settimeout-setinterval

0

利用这一点,它会帮助你,为了你的页面得到加载你根本就使用新的日期()和调用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