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

Posted

技术标签:

【中文标题】如何制作 4 小时自动重启计时器?【英文标题】:How to make a 4 hour auto restarting timer? 【发布时间】:2013-02-02 02:09:27 【问题描述】:

我需要一个计时器来一次倒计时 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" >
        <p style="text-align: left;"></p>
      </td>
    </tbody>
  </table>
</div>

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

【问题讨论】:

那么这里的问题到底是什么? 指定您要查找的内容。实际上,这听起来很像您要求人们为您编写代码。此外,您当前的 javascript 将访问客户端时间,而不是服务器时间,因此“12 点”对于某些用户来说会有所不同。 【参考方案1】:

使用 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 小时)。

这究竟是为了什么?

【讨论】:

以上是关于如何制作 4 小时自动重启计时器?的主要内容,如果未能解决你的问题,请参考以下文章

如何写个linux shell脚本自动重启系统

系统Windows Server 2003,要求每隔2小时自动重启一次服务器,并且每天都是一样?

MySQL解决8小时内没有进行数据库操作, mysql自动断开连接, 需要重启tomcat的问题

IIS每隔一段时间就无法进行访问,重启服务也不行,必须重启服务器才可以,请问是啥情况?如何解决?

为啥我的电脑 每天下午四点-五点都要自动重启.而且是无限重启.关机一个小时以上再开机就好了.

ecplise中如何关闭Tomcat的自动重启/加载