仅在一天的特定时间以设定的间隔运行功能

时间:2015-11-09 08:28:59

标签: javascript node.js timer setinterval timer-jobs

我目前正在全天候定期运行一个功能。

setInterval( function(){ do_this(); } , 1000*60);

不幸的是,这不是我想要的。我希望这个功能只能在早上9点到18点之间定期运行。该功能不应在这些时间之外运行。如何在node.js中完成?是否有方便的模块或功能可供使用?

3 个答案:

答案 0 :(得分:5)

您只需检查当前时间是否在所需的时间范围内,然后使用它来决定是否执行您的功能。

setInterval( function(){ 
    var hour = new Date().getHours();
    if (hour >= 9 && hour < 18) {
        do_this(); 
    }
} , 1000*60);

这将在9:00到18:00之间每分钟运行一次。

答案 1 :(得分:2)

您正在使用任何特定框架吗?

如果我们像这样抽象,你很可能想要使用像cronjob这样的东西。有一个模块:https://github.com/ncb000gt/node-cron

你想要的模式:

00 00 9-18 * * * - 这将在9-18之间每小时运行,正好是0分0秒。

答案 2 :(得分:1)

检查do_this功能中的当前小时。

function do_this(){
    var now = new Date();
    var currentHour = now.getHours();
    if(currentHour < 9 && currentHour > 18) return;
    //your code
}

setInterval( function(){ do_this(); } , 1000*60);