如何设置4小时自动重启计时器?

问题描述 投票:0回答:2

我需要一个计时器来一次倒计时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)。此外,还需要从美国东部时间中午(12pm)开始倒计时。我希望时间以h:mm:ss格式显示,我也错过了上述代码的时间。

javascript html timer countdown
2个回答
0
投票

使用PHP来获取初始页面加载时的日期/时间,而不是client / 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个小时)。

这实际上是什么?


0
投票

您能否编写一个每天运行到06:00:00的脚本?

© www.soinside.com 2019 - 2024. All rights reserved.