I have the following code taken from stack overflow:
function doSomething() {
var d = new Date(),
h = new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours() + 1, 0, 0, 0),
e = h - d;
window.setTimeout(doSomething, e);
//code to be run
alert("On the hour")
}
doSomething();
This works perfectly and produces an alert every hour on the hour. I would like the function to run every 15 minutes, at 00, 15, 30 and 45
Get the time of the next even 15
minutes by:
(d.getMinutes() - (d.getMinutes() % 15)) + 15
On example when you invoke doSomething()
at 13:43, it will run next time at 13:45:
( 43 - (43 % 15) + 15 ) = ( 43 - 13 + 15 ) = 45
Then it will run as expected: 14:00, 14:15 and so on...
Complete code:
function doSomething() {
var d = new Date(),
h = new Date(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), (d.getMinutes() - (d.getMinutes() % 15)) + 15, 0, 0),
e = h - d;
window.setTimeout(doSomething, e);
console.log('run');
}
doSomething();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With