Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS调用函数每5分钟计算一次服务器时间_Javascript_Date - Fatal编程技术网

Javascript JS调用函数每5分钟计算一次服务器时间

Javascript JS调用函数每5分钟计算一次服务器时间,javascript,date,Javascript,Date,我需要每5分钟调用一些JS函数,但不是简单地在页面加载后每5分钟调用一次,而是在服务器上每5分钟调用一次。即当服务器时钟达到5、10、15等分钟时 我编写了下一个代码,但我不知道当当前服务器时间

我需要每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);
var os=0;

如果(min,您可以通过服务器端语言在页面上显示时间戳

<script>
var serverTimeStamp = <?php echo (1000*time());?>; 
</script>

var serverTimeStamp=;
在这个特定的页面上,您将有一个实际的服务器时间值

您还可以对服务器进行ajax调用,这将返回实际的服务器时间, 并在时机成熟时执行客户端站点javascript操作

每5分钟按服务器时间拨打一次电话

我看不出每5分钟在服务器时间和客户机时间上有什么重大区别

每5分钟就是每5分钟。

无需计算5分钟间隔,只需设置间隔
窗口。setInterval()

示例代码: 这里的
5000
5秒


如果您的目标是找出从“现在”到下一个五分钟标记的时间间隔,请参考

,以下是您的方法:

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) 现在是太阳2014年2月2日13:47:36 GMT+0000(GMT) 到下一个五分钟标记的时间:143169毫秒 下一个五分钟标志:太阳2014年2月2日13:50:00 GMT+0000(GMT)
在您的问题中,您不止一次提到“服务器时间”,但您的代码中没有任何内容与服务器上的时间相关。这都是在使用客户端上的时间。要获得服务器上的时间,您必须让服务器将该信息发送到客户端,然后再使用它(即使这样,当然也会有不准确的情况,因为客户端从服务器检索时间值需要一段不确定的时间;在正常使用中,这段时间很短).

您可以使用双向连接,即WebSocket,然后您可以在服务器端写入超时,并发送到服务器端的所有客户端。建议使用SingalR。我刚开始学习WebSocket,现在我需要js的解决方案。问题不在于时间。时间偏移到下一个5分钟计数的问题。5分钟不是真的在我的情况下是5分钟。如果我加载页面并使用您的示例,我的函数将在页面加载后每5秒执行一次。但我需要在服务器计时器为hh:05:00、hh:10:00、hh:15:00等时执行它。即我需要获得下一次函数执行的时间偏移量。每次加载页面后都会有所不同。@SirD:与此无关代码上的服务器时间。JS应该主要用于客户端脚本,而不是服务器端。@SirD:如果有5个并发用户,您将如何确定5分钟以及为谁服务请求谢谢!您说得对-我在这里发布的代码没有使用服务器时间,但我将它发布给用户,只需将它从这里复制粘贴到jsFiddle和写下答案。 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)