【问题标题】:How should I update a time? new Date or setInverval?我应该如何更新时间?新日期或设置间隔?
【发布时间】:2016-12-31 04:34:40
【问题描述】:

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

它们都可以工作,但我想知道它是否负责每秒创建一个新对象,因为我确信 setInterval() 方法会使用相当少的资源,因为在获得时间时会执行三个函数。 (.getHours(), .getMinutes(), .getSeconds())

我可以看到让它使用 new Date 对象的优势,因为我认为它会随着系统时间的变化(改变时区或夏令时调整)而改变。

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

【问题讨论】:

    标签: javascript date object time intervals


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      使用这个,它会帮助你,为了在页面加载后只显示一次时间,你可以使用 new Date() 和 getHours(),getMinutes,getSeconds 函数。为了在不刷新页面的情况下显示更新的时间,您需要同时使用 setInterval() 和 new date() 功能。您需要在设置的时间间隔内使用 new 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);
      &lt;div id="date"&gt;&lt;/div&gt;

      【讨论】:

      • 这不是答案。
      • 我可以知道你评论@RobG的原因
      • 它没有回答问题。
      猜你喜欢
      • 1970-01-01
      • 2021-03-16
      • 2021-11-27
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多