如何在特定时间和日期运行功能?

Sha*_*ins 4 javascript time jquery date

如何在给定的时间和日期运行函数.

例如,我有一个功能,在每个月的12号上午10点,我有一个惊喜,我想告诉他们这个.我怎样才能始终运行此功能,但仅在此时执行?

正如所指出的那样,这个页面将全天候运行,显然这会影响我的答案.

显然我必须与当前日期进行比较,但我不确定如何检查当前日期和时间是否匹配.

香农

Aln*_*tak 11

建议不要使用setInterval它,因为它具有非确定性行为 - 可能会错过事件或立即触发事件.时间也会不同步.

相反setTimeout,下面的代码使用一分钟的时间段,其中每分钟计时器重新同步,以便尽可能接近hh:mm:00.000s点.

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);
    })();
}
Run Code Online (Sandbox Code Playgroud)


bhb*_*bhb 6

在要进行检查的页面上添加此内容

setInterval(function () {
    var date = new Date();
    if (date.getDate() === 12 && date.getHours() === 10 && date.getMinutes === 0) {
        alert("Surprise!!")
    }
}, 1000)
Run Code Online (Sandbox Code Playgroud)

小提琴


更新 - 添加date.getSeconds == 0限制为在 10:00:00 只触发一次。感谢下面的评论

  • 这段代码有 bug,一个是可见的,一个是不可见的。看不见的错误是它会一遍又一遍地重复显示警报,直到时间到达 10:01。 (4认同)
  • @Alnitak,再次,您的评论基于这样的假设:我只想运行该函数一次,而且用户也不能完全编写代码,这是相当明显的,只需在通过后清除间隔即可。 (3认同)