Javascript 为什么我的倒计时钟停止计时了?
让我先说一句,我对JavaScript一无所知 例如,我只想链接到一个倒计时,它将倒计时到特定服务器打开时 我曾经进行倒计时,并对其进行了修改,以便它使用服务器时间而不是客户端时间Javascript 为什么我的倒计时钟停止计时了?,javascript,html,Javascript,Html,让我先说一句,我对JavaScript一无所知 例如,我只想链接到一个倒计时,它将倒计时到特定服务器打开时 我曾经进行倒计时,并对其进行了修改,以便它使用服务器时间而不是客户端时间 var serverNow = new Date().toLocaleString("en-US", {timeZone: "Asia/Seoul"}); var tomorrowKR = new Date(serverNow); tomorrowKR.setDate(tomorrowKR.getDate()+1
var serverNow = new Date().toLocaleString("en-US", {timeZone: "Asia/Seoul"});
var tomorrowKR = new Date(serverNow);
tomorrowKR.setDate(tomorrowKR.getDate()+1)
tomorrowKR.setHours(18,0,0,0)
var countDownDateKR = tomorrowKR.getTime();
var x = setInterval(function() {
var now = new Date(serverNow).getTime();
var distanceKR = countDownDateKR - now;
var hoursKR = Math.floor((distanceKR % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
var minutesKR = Math.floor((distanceKR % (1000 * 60 * 60)) / (1000 * 60));
var secondsKR = Math.floor((distanceKR % (1000 * 60)) / 1000);
document.getElementById("ASIAServer").innerHTML = "The KR Server is currently CLOSED, but will open again in " + hoursKR + "h " + minutesKR + "m " + secondsKR + "s (6 PM KST)" ;
}, 1000);
}
这个错误似乎是有道理的
var now = new Date(serverNow).getTime();
如果我删除“serverNow”并让它随着客户端时间滚动,它将倒计时。
将其更改为serverNow,将显示正确的倒计时时间,但实际的倒计时操作将停止
这是怎么回事 在
setInterval
内运行newdate(serverNow)
时,该值不会更新,因为serverNow
不会更改serverNow
是一个固定字符串,它保留第一次加载页面时的值。要使立即
以每个间隔更新,您需要获取最新的服务器时间:
now = new Date(new Date().toLocaleString("en-US", {timeZone: "Asia/Seoul"})).getTime();
绝对不是世界上最漂亮的代码。您应该知道,在香草Javascript中处理日期和时区总是很麻烦。很多人使用Moment.js来避免令人头疼的问题。您是否检查了console中的错误?“并对其进行了修改,以便它使用服务器时间”-您具体在哪里做的?不是用
var serverNow=new Date().toLocaleString(…)
,这仍然是绝对的,纯粹的客户端。@Justinas是的,空的:/What's timezone offset?@CBroe我明白了,是的,但我真正想要的是让人们知道它什么时候在下午6点KST或其他时间可用。那还不够倒计时吗?