我应该如何更新时间?新日期或 setInterval?
How should I update a time? new Date or setInverval?
我每秒更新一次时钟,时间来自 new Date
对象,但我想知道是简单地添加初始时间 setInterval
还是创建更好每秒 new Date
并使用该对象更新时间。
它们都有效,但我想知道它是否负责每秒创建一个新对象,因为我确信 setInterval()
方法会使用相当少的资源,因为执行了三个函数有时间的时候。 (.getHours()
, .getMinutes()
, .getSeconds()
)
我可以看到让它使用 new Date
对象的优势,因为我假设它会在系统时间更改(更改时区或夏令时调整)时更改。
那么使用 setInverval()
效率更高还是每次使用与创建 new Date
对象一样多的资源?
setInterval(function myFunc(){}, 1000)
不保证 myFunc
每秒都会被调用。事实上,间隔可以有很大的不同。例如,在Chrome中,如果你改变标签,间隔会减慢很多,直到你return到初始标签。
所以继续使用 new Date()
.
参见 http://javascript.info/tutorial/settimeout-setinterval
使用它,它会对您有所帮助,为了在您的页面加载后仅显示一次时间,您只需使用新的 Date() 和 getHours()、getMinutes、getSeconds 函数即可。为了在不刷新页面的情况下显示更新时间,您需要同时使用 setInterval() 和新的 date() 功能 together.you 需要在设置的时间间隔内使用新的 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>
我每秒更新一次时钟,时间来自 new Date
对象,但我想知道是简单地添加初始时间 setInterval
还是创建更好每秒 new Date
并使用该对象更新时间。
它们都有效,但我想知道它是否负责每秒创建一个新对象,因为我确信 setInterval()
方法会使用相当少的资源,因为执行了三个函数有时间的时候。 (.getHours()
, .getMinutes()
, .getSeconds()
)
我可以看到让它使用 new Date
对象的优势,因为我假设它会在系统时间更改(更改时区或夏令时调整)时更改。
那么使用 setInverval()
效率更高还是每次使用与创建 new Date
对象一样多的资源?
setInterval(function myFunc(){}, 1000)
不保证 myFunc
每秒都会被调用。事实上,间隔可以有很大的不同。例如,在Chrome中,如果你改变标签,间隔会减慢很多,直到你return到初始标签。
所以继续使用 new Date()
.
参见 http://javascript.info/tutorial/settimeout-setinterval
使用它,它会对您有所帮助,为了在您的页面加载后仅显示一次时间,您只需使用新的 Date() 和 getHours()、getMinutes、getSeconds 函数即可。为了在不刷新页面的情况下显示更新时间,您需要同时使用 setInterval() 和新的 date() 功能 together.you 需要在设置的时间间隔内使用新的 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>