我需要每隔5分钟调用一些JS函数,但不是在页面加载后每隔5分钟调用一次,而是每隔5分钟服务器时间调用一次。即服务器时钟达到5,10,15等时。
我写了下一段代码,但我不知道如何在当前服务器时间< %5分钟(例如03:13:28)..
我第一次在页面加载时调用函数,但下次必须在服务器时间事件上调用它。
Dig = new Date(parseInt(new Date().getTime()/1000)*1000);
var min = Dig.getMinutes();
var sec = Dig.getSeconds();
if(min%5==0){
var to = ((300-sec)*1000);
}else{
// HERE MY PROBLEM
}
setTimeout(function(){
myFunction();
setInterval(function(){
// do something every 5 mins on server time
myFunction();
}, 300000);
}, to);
现在我按// <问题
进行操作 var os = 0;
if(min<4){
os = 4-min;
}else if(min<9){
os = 9-min;
}else if(min<14){
os = 14-min;
}else if(min<19){
os = 19-min;
}else if(min<24){
os = 24-min;
}else if(min<29){
os = 29-min;
}else if(min<34){
os = 34-min;
}else if(min<39){
os = 35-min;
}else if(min<44){
os = 44-min;
}else if(min<49){
os = 49-min;
}else if(min<54){
os = 54-min;
}else if(min<59){
os = 59-min;
}
sec = 60-sec;
os = ((os*60)+sec);
var to = (os*1000);
但我需要最短的变体。
答案 0 :(得分:1)
如果你的目标是找出从“现在”到下一个五分钟标记的毫秒数,这里是你如何做到的:
var fiveMinutes = 5 * 60 * 1000;
var now = new Date().getTime();
var untilNextFiveMinuteMark = fiveMinutes - (now % fiveMinutes);
console.log("now is " + new Date(now));
console.log("time to next five-minute mark: " + untilNextFiveMinuteMark + "ms");
console.log("next five minute mark: " + new Date(now + untilNextFiveMinuteMark));
例如,对我来说(我在英国),它说:
now is Sun Feb 02 2014 13:47:36 GMT+0000 (GMT) time to next five-minute mark: 143169ms next five minute mark: Sun Feb 02 2014 13:50:00 GMT+0000 (GMT)
在您的问题中,您不止一次谈论“服务器时间”,但您的代码中没有任何内容与服务器上的时间相关。这都是在客户端上使用的时间。要在服务器上获得时间,您必须让服务器将该信息发送给客户端然后使用它(即使这样,当然也会出现不准确,因为客户端需要不确定的时间来检索时间值从服务器;在正常使用中,那个时间会很小。)
答案 1 :(得分:-1)
您可以按服务器端语言
显示页面上的时间戳<script>
var serverTimeStamp = <?php echo (1000*time());?>;
</script>
,您将在此特定页面上拥有实际的服务器时间值。
你也可以对服务器进行ajax调用,这将返回实际的服务器时间, 并在时机成熟时执行客户端站点javascript操作。
答案 2 :(得分:-1)
在服务器时间每隔5分钟呼叫
我在服务器时间和客户机时间上每隔5分钟就看不出重大差异。
每隔5分钟,每隔5分钟。
无需计算5分钟差距,只需设置间隔window.setInterval()
var counter = 0;
CallEvery5Minutes();
var interval = window.setInterval(function () {
CallEvery5Minutes();
}, 5000); //5000 is 5 Seconds
function CallEvery5Minutes() {
console.log("5 Minutes Completed!!! = '" + counter + "'");
if (counter == 5) {
clearInterval(interval);
console.log("Interval has been cleared!!!");
}
counter += 1;
}
此处5000
为5 Seconds
。
参考 LIVE DEMO