如何制作 4 小时自动重启计时器

How to make a 4 hour auto restarting timer?

本文关键字:重启 计时器 小时 何制作      更新时间:2023-09-26

我需要一个计时器一次倒计时 4 小时,然后在点击 0 后重新启动。所有客户端的剩余时间需要相同。我目前有这个:

function addZero(i) {
  if (i < 10) {
    i = "0" + i;
  }
  return i;
}
setInterval(function() {
  function addZero(i) {
    if (i < 10) {
      i = "0" + i;
    }
    return i;
  }
  var d = new Date();
  var s = (d.getSeconds());
  var m = (d.getMinutes());
  var x = document.getElementById("timer");
  var c = addZero(30 - m) + ":" + addZero(60 - s);
  var d = addZero(60 - m) + ":" + addZero(60 - s);
  if (m < 30) {
    t = c
  } else {
    t = d
  }
  x.innerHTML = t;
}, 250)
<div align="center">
  <table>
    <tbody>
      <td style="font-size:15px;">Time to next restart:</td>
      <td style="font-size:16px;" id="timer"></td>
      <td nowrap="nowrap" width="15px">
        <p style="text-align: left;"></p>
      </td>
    </tbody>
  </table>
</div>

倒计时 30 分钟,然后重置回 30。然而,当它到达最后一秒时,它会数到 60,而不是直接到 59(所以 4:00/3:60/3:59)。此外,它还需要从美国东部标准时间中午(中午 12 点)开始倒计时。我希望时间以h:mm:ss格式显示,我也错过了上述代码的小时。

使用 PHP

获取初始页面加载时的日期/时间,而不是客户端/JS Date() - 这在机器之间可能大不相同,所以如果你想让客户端同步,这是毫无价值的(PHP 日期将来自服务器时钟,所以只要它是正确的,你可以将多个客户端同步到它)。即使以这段时间为基础,然后在客户端上倒计时四个小时也不太可能导致时间同步良好 - 我会定期参考服务器来同步它。

至于你显示60的问题,你能不能只替换代码中的数字这样:

var d = addZero(60 - m) + ":" + addZero(60 - s);

成为

var d = addZero(59 - m) + ":" + addZero(59 - s); 

看到返回值始终为 0-59,这只会颠倒它,你不会得到减号,它会显示数字时钟的实际内容(你永远不会看到它们达到 60 分钟/秒,它们重置为 0)。

我会用 JS 进行分钟/秒计数,因为它如此频繁地引用服务器是没有意义的 - 如果您在同步时注意到差异,如果您不长时间(如 4 小时)检查之间,它不太可能太高。

这到底是为了什么?