How to run a function at specific time & date?

前端 未结 5 1489
日久生厌
日久生厌 2020-12-02 17:40

How can I run a function at a given time and date?

Example: I have a function that needs to run on the 12th of each month at 10AM.

This page will be running

5条回答
  •  庸人自扰
    2020-12-02 18:17

    It's not advised to use setInterval because it has non-deterministic behaviour - events can be missed, or fire all at once. Time will fall out of sync, too.

    The code below instead uses setTimeout with a one minute period, where each minute the timer is resynchronised so as to fall as closely to the hh:mm:00.000s point as possible.

    function surprise(cb) {
        (function loop() {
            var now = new Date();
            if (now.getDate() === 12 && now.getHours() === 12 && now.getMinutes() === 0) {
                cb();
            }
            now = new Date();                  // allow for time passing
            var delay = 60000 - (now % 60000); // exact ms to next minute interval
            setTimeout(loop, delay);
        })();
    }
    

提交回复
热议问题