我正在寻找一个可以说“重启: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秒”
帮助任何人?
答案 0 :(得分: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()
)。