2017-04-18 31 views
0

私は5分ごとに私の電話を呼び出すためにsetInterval(5*60*1000)を使用していますが、問題は00.03AMに私のウェブページを開くと、その機能が呼び出される時間は00.08AMです。localtimeをsetInterval()でどのように使うことができますか?

だから、私は自分の機能がローカルタイムに従うようにしたい、私は現実の時間を意味する。たとえば、00.03AMにWebページを開くと、関数は5分ごとに呼び出されます。00.05AM, 00.010AM, 00.015AM, ...

つまり、時間内に次の5分の点で関数を実行するにはどうすればよいですかその後5分ごとに実行されます。 どうすればいいか教えてください。ありがとうございました。

+0

あなたがなりたい方法を正確に応じて、1分の間隔で、あなたの関数を実行すると、それは現在の時刻が5 – Hamms

答えて

3

私は毎分の時間をチェックするだけですが、時間が5分の倍数であれば何かを実行します。このような何か:

setInterval(function() { 
    if(new Date().getMinutes() % 5 == 0){ 
    // Do something 
    } 
}, 60*1000) 
+0

の倍数であるかどうかを確認することを検討ありがとうございました。できます !!!。しかし、少し遅れてわずか2〜3秒前に(時には)それは再び関数を呼び出します。そこでfuction: 'if(new Date()。getSeconds()== 0)'を追加して、関数をちょうど5分間呼び出すことにしました。 – Nothingnez

+0

これを実行した場合、毎秒実行するには 'setInterval'が必要であることを忘れないでください! –

+0

はい私はしました。ありがとうございました :) – Nothingnez

0

がどれだけ離れて、今後5に決定し、その後、その時点で始まるイベントを発生。

var dateNow = new Date(Date.now()); 
 
var currentMinute = parseInt(dateNow.getMinutes().toString()[1]); 
 
var currentSecond = dateNow.getSeconds(); 
 

 
var timer1; 
 
var secsUntilNextFive = 5; 
 

 
console.log("Minutes is: " + currentMinute); 
 
console.log("Seconds is: " + currentSecond); 
 

 
if (currentMinute===5 || currentMinute===0) 
 
{ 
 
    secsUntilNextFive = 1; 
 
} 
 
else if (currentMinute<5) 
 
{ 
 
    secsUntilNextFive = (5-currentMinute) * 60; 
 
} 
 
else if (currentMinute>5) 
 
{ 
 
    secsUntilNextFive = (10-currentMinute) * 60; 
 
} 
 
// Now subtract the mins already elapsed towards next goal 
 
secsUntilNextFive -= currentSecond; 
 

 
console.log("Timer will kickoff in: " + secsUntilNextFive + "seconds"); 
 

 
DoAction(); // Do the first time or you can wait until the timer goes off 
 

 
setTimeout(function(){ 
 

 
    console.log("Starting timer now..."); 
 
//Start the interval to now start every 5 
 
    timer1 = setInterval(DoAction, 60*1000*5); 
 
    
 
}, secsUntilNextFive*1000); 
 

 
function DoAction() { 
 
    console.log("Doing a task..."); 
 
}

関連する問題