[英]Recurring function to reset variable/counter at midnight (moment.js, node.js)
我想在午夜重置一个变量。 每天晚上。 我正在尝试使用Moment.js for Node构建此功能,但似乎无法使重复部分正常工作。
这就是我到目前为止所得到的。
// 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());
如何最好地使它在每晚的午夜重现?
提前致谢。
如果您正在使用moment ,请考虑使用此实现
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());
相当通用,实际上取决于返回的值,您可以随时安排任何时间,非常有用,好像有人必须考虑到这一点。
Node的类cron和非类cron作业调度程序。
他们做到了。 也许您真正想要的是node-schedule 。 不过,现在看来它并不是真的很活跃。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.