0

我正在寻找一个可以说“重新启动:x 小时、x 分钟和 x 秒”的倒计时脚本。在我的网站上概述我的服务器。(适用于每 6 小时重启一次的游戏服务器)

我找到了一个倒计时脚本,但我不知道如何运行它,这是脚本以及我如何尝试将它放在网站上。

var serverRestartHours = [3,9,15,21]; // in UTC
var startTime = new Date(); 

var hoursOffset = startTime.getTimezoneOffset()/60;
var currentHourUTC = startTime.getHours()+hoursOffset;
var nextRestartHour = 0;

for (i = 0; i < serverRestartHours.length; i++) {
if(serverRestartHours[i] > currentHourUTC){
    nextRestartHour = serverRestartHours[i];
    break;
}
}
if(currentHourUTC >= serverRestartHours[serverRestartHours.length-1])
nextRestartHour = serverRestartHours[0];

var endTime = new Date();
endTime.setMinutes(0);
endTime.setSeconds(0);
endTime.setHours(nextRestartHour-(endTime.getTimezoneOffset()/60));
console.log(endTime);

function update(){
var currentTime = new Date();

var remainingTime = new Date();
remainingTime.setTime(endTime.getTime()-currentTime.getTime());
if(remainingTime<0)
    return;

if(remainingTime.getHours()<=1)
    $("#note").text(remainingTime.getMinutes()+" minutes and "+remainingTime.getSeconds() + " seconds");
else
    $("#note").text(remainingTime.getHours()-1+" hours, "+remainingTime.getMinutes()+" minutes and "+remainingTime.getSeconds() + " seconds");

}
update();
setInterval(update,1000);

我尝试在我的网站上包含此内容(使用 SimplePortal 运行 SMF,尝试在 HTML 块中实现此内容)

<div style="margin:12px;">Restart in: <span id="note"></span>
<script type="text/javascript" src="countdown.js"></script>
</div>

这样做我得到的只是普通字体说“重新启动:”而不是“重新启动:x 小时、x 分钟和 x 秒”

帮助任何人?

4

1 回答 1

1

请注意,setInterval大约以请求的间隔运行,稍后会逐渐漂移。如果您希望在合理的时间内更新某些内容,最好使用 setTimeout 并估计它需要等待多长时间。

此外,代码似乎比它需要的更冗长。如果从 0300 开始每隔 6 小时更新一次,您可以执行以下操作:

<script>
// Countdown in hh:mm:ss to next 0300, 0900, 1500 or 2100
// Uses local time
function timeToUpdate() {

  // Add leading zero to numbers less than 10
  function z(n) {return (n < 10? '0' : '') + n;}

  var now = new Date();

  // Calculate seconds to go, convert 60 to 00
  var secsToGo = (60 - now.getSeconds()) % 60;

  // Calculate minutes to go. If secs at 0, add 1
  var minsToGo = (59 - now.getMinutes() + !secsToGo) % 60;

  // Calculate hours to go. If secs and mins at 0, add 1
  var hoursToGo = 5 - ((now.getHours() + 3) % 6) + !(minsToGo + secsToGo); 

  // Return formatted string
  return z(hoursToGo) + ':' + z(minsToGo) + ':' + z(secsToGo);
}

function updateClock() {

  // Update counter
  document.getElementById('timeToGo').innerHTML = timeToUpdate();

  // Run just after next full second
  var lag = 1020 - (new Date()).getMilliseconds();
  setTimeout(updateClock, lag);
}
</script>

<button onclick="updateClock()">Start countdown</button>
<div>Restart in: <span id="timeToGo"></span></div>

以上使用本地时间,使用UTC,更改为UTC方法(例如now.getUTCHours())。

于 2013-05-20T23:07:19.417 回答