我试图每10分钟倒计时(根据服务器时间,而不是客户端)。每10分钟(例如上午10点,上午10点10分,上午10点20分:上午),它需要刷新页面并重新开始。jQuery定时器/倒计时使用服务器时间
我发现超时功能,但没有使用服务器时间,我可以重置十。
有没有人做过这样的事情?
感谢
我试图每10分钟倒计时(根据服务器时间,而不是客户端)。每10分钟(例如上午10点,上午10点10分,上午10点20分:上午),它需要刷新页面并重新开始。jQuery定时器/倒计时使用服务器时间
我发现超时功能,但没有使用服务器时间,我可以重置十。
有没有人做过这样的事情?
感谢
我最终在评论/答案和其他帖子中使用了一些想法,并提出了这个问题。
它每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>
可以渲染计时器形式的服务器端开始,然后用它来控制服务器端的定时器逻辑。
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)
我不是所有熟悉C#,所以原谅PHP示例,但概念是相同的。在JavaScript中,创建保存,直到下一个刷新的时间长度可变..
<script>
var firstRefresh=<?php echo $numberOfMiliSecondsToFirstRefresh; ?>;
</script>
那么你可以设置你的第一个计时器的时间量刷新,并从那时起了,你可以每10分钟刷新一次...
你有没有考虑简单地设置在JavaScript中的时间以匹配服务器? – 2012-02-14 19:03:34
; url = whatever.aspx”/> – Holystream 2012-02-14 19:25:01
我已经想出了一个使用jQuery和服务器端值的解决方案。一旦它允许我发布答案。 – 2012-02-14 20:29:11