Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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每15分钟计算一个值并在午夜重置_Javascript_Setinterval - Fatal编程技术网

JavaScript每15分钟计算一个值并在午夜重置

JavaScript每15分钟计算一个值并在午夜重置,javascript,setinterval,Javascript,Setinterval,我试图计算一个值,从午夜开始,每15分钟计算一次,并在午夜将该值重置为0 其想法是每分钟检查一次时间,并在午夜(00:00)设置一个15分钟的新间隔来进行计算 我用的是: setInterval(function() { var date = new Date(); if(date.getHours() == 0 && date.getMinutes() == 0){ setInterval(calcFunction, 900000);

我试图计算一个值,从午夜开始,每15分钟计算一次,并在午夜将该值重置为0

其想法是每分钟检查一次时间,并在午夜(00:00)设置一个15分钟的新间隔来进行计算

我用的是:

setInterval(function() { 
    var date = new Date(); 

    if(date.getHours() == 0 && date.getMinutes() == 0){ 
       setInterval(calcFunction, 900000);
    }
}, 60000);

var calcFunction = function() { 
    var myValue = 0;

    if(date1.getHours() == 0 && date1.getMinutes() == 0) {// Check for midnight
        myValue = 0;        // resets value
    } else {
        myValue=myValue + Math.random();  
    }

    console("Value: " + myValue);
};

问题是,这不能正常工作。该值每分钟计算一次,每4天重置一次。

获取每季度(00、15、30、45)调用函数的更简单方法是使用
%
(模)运算符:

setInterval(function() { 
    var date = new Date(); 

    if((date.getMinutes() % 15) === 0){ 
       calcFunction();
    }
}, 60000);

另外,您的
calcFunction
正在函数内部设置
myValue=0
,这意味着每次调用它时它都会重置为零,您可能希望将它移到函数外部。

让函数每四分之一小时(00、15、30、45)调用一次更简单的方法是使用
%
(模)接线员:

setInterval(function() { 
    var date = new Date(); 

    if((date.getMinutes() % 15) === 0){ 
       calcFunction();
    }
}, 60000);

另外,您的
calcFunction
正在函数内部设置
myValue=0
,这意味着每次调用它时它都会重置为零,您可能希望将它移到函数外部。

var myValue=0
移到函数外部。最外层的
setInterval
设置为60000,这是一分钟。将
var myValue=0
移到函数外部。最外层的
setInterval
设置为60000,这是一分钟。