繁体   English   中英

在午夜重置变量/计数器的循环函数(moment.js,node.js)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM