在午夜重置variables/计数器的重复函数(moment.js,node.js)

我想在午夜重置一个variables。 每个晚上。 我试图用Moment.js为Node构build这个函数,但我似乎无法让重复部分正常工作。

这是我到目前为止。

// Calculate time to midnight function timeToMidnight(){ var midnight = new Date(); midnight.setHours(0,0,0,0); var now = new Date(); var msToMidnight = midnight - now; console.log(' it is ' + msToMidnight + 'ms until midnight'); return msToMidnight; }; // Reset counter at midnight setTimeout(function(){ console.log("midnight, do something"); }, timeToMidnight()); 

我怎样才能最好的让它每天晚上在午夜重现呢?

提前致谢。

如果你正在使用的时刻 ,考虑这个实现

 var moment = require('moment'); function timeToMidnight() { var now = new Date(); var end = moment().endOf("day"); return end - now + 1000; } 

就像你的函数一样,这需要毫秒数,并计算直到午夜的毫秒数,但是在使用时刻时直接支持它,这很好。 再加1秒(1000毫秒)即可到达第二天。

一个典型的模式是一个函数在超时后自行调用。

 function roundMidnight() { console.log('at midnight'); setTimeout(roundMidnight,timeToMidnight()); } setTimeout(roundMidnight,timeToMidnight()); 

相当通用,实际上取决于返回的价值,你可以随时安排任何事情,很有用,似乎有人一定想到了这一点。

节点时间表

一个类似于cron的,不是类似于Node的作业调度器。

他们做到了。 也许你真正想要的是节点时间表 。 不过,看起来现在还没有真正积极开发。