我正在尝试每10分钟倒计时一次(根据服务器时间而不是客户端)。每隔10分钟(例如上午10点,上午10点10分,上午10点20分:上午10点),需要刷新页面并重新开始。
我找到了超时功能,但没有使用服务器时间,我可以重置数十。
以前有人做过这样的事吗?
由于
答案 0 :(得分:0)
您可以渲染计时器表单服务器端的启动,然后使用它来控制服务器端的计时器逻辑。
E.g。
var timerStart = new Date("dateString");//Render this from server side
然后在倒计时逻辑中使用timerStart
变量。
在JavaScript中创建新日期的一些示例。
new Date(milliseconds) //milliseconds since 1970/01/01
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)
答案 1 :(得分:0)
我不熟悉C#,所以请原谅PHP示例,但概念是一样的。在您的Javascript中,创建一个变量,该变量保存下一次刷新的时间长度..
<script>
var firstRefresh=<?php echo $numberOfMiliSecondsToFirstRefresh; ?>;
</script>
然后你可以设置你的第一个计时器在那个时间内刷新,从那时起,你可以每10分钟刷新一次......
答案 2 :(得分:0)
我最终在评论/答案和其他帖子中使用了一些想法并提出了这个想法。
每10分钟倒计时(同样,根据服务器)并显示计时器值。当它达到“0”( - 1:59)时,它将重新加载页面并在10分钟后重新开始。
可能不是最干净的代码,但它看起来效果很好:
<script>
var currentMin = @DateTime.Now.Minute;
var currentSec = @DateTime.Now.Second;
var minutesLeft = 0;
var secondsLeft = 0;
$(document).ready(function() {
setupTimer();
});
function setupTimer() {
var baseMins = 0;
if (currentMin >= 0 && currentMin <= 9)
baseMins = 10;
else if (currentMin >= 10 && currentMin <= 19)
baseMins = 20;
else if (currentMin >= 20 && currentMin <= 29)
baseMins = 30;
else if (currentMin >= 30 && currentMin <= 39)
baseMins = 40;
else if (currentMin >= 40 && currentMin <= 49)
baseMins = 50;
else if (currentMin >= 50 && currentMin <= 59)
baseMins = 60;
minutesLeft = (baseMins - 1) - currentMin;
secondsLeft = 60 - currentSec;
setInterval(decreaseTimer, 1000);
}
function decreaseTimer() {
secondsLeft--;
if (secondsLeft == -1) {
minutesLeft--;
secondsLeft = 59;
}
if (minutesLeft == -1 && secondsLeft == 59) {
location.reload();
}
displayTimer();
}
function displayTimer() {
if (minutesLeft == 0)
minutesLeft = "0";
if (secondsLeft < 10)
secondsLeft = "0" + secondsLeft;
var timerDisplay = minutesLeft + ":" + secondsLeft;
$("#timer").text(timerDisplay);
}
</script>