我该如何更新时间? new Date或setInverval?

时间:2016-12-31 04:34:40

标签: javascript date object time intervals

我每秒钟更新一次时钟,时间来自一个new Date对象,但我想知道用setInterval简单地添加初始时间或者创建一个{是否更好{1}}每秒使用该对象来更新时间。

它们都有效,但我想知道每秒创建一个新对象是否有责任,因为我确信new Date方法会使用相当少量的资源,因为获取时会执行三个函数时间。 (setInterval().getHours().getMinutes()

我可以看到使用.getSeconds()对象的优势,因为我认为它会在系统时间变化时发生变化(更改时区或夏令时调整)。

使用new Date更有效率,还是每次都使用与创建setInverval()对象一样多的资源?

2 个答案:

答案 0 :(得分:2)

setInterval(function myFunc(){}, 1000)无法保证每秒都会调用myFunc。事实上,inteval可能会有很大差异。例如,在Chrome中,如果更改制表符,则间隔将减慢很多,直到您返回初始制表符 所以请继续使用new Date()http://javascript.info/tutorial/settimeout-setinterval

答案 1 :(得分: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>