cron-job
Version:
cron job.Do something every day or at a specific time
90 lines (82 loc) • 2.06 kB
JavaScript
/**
* Created by lance on 16-3-21.
*/
//constant
const ONE_DAY = 24*60*60;//one day.
var date_util = {
getToday:function(){
var today = new Date();
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
today.setMilliseconds(0);
return Math.floor(today.getTime()/1000);
}
,getThisMonth:function(){
var today = new Date();
today.setDate(0);
today.setHours(0);
today.setMinutes(0);
today.setSeconds(0);
today.setMilliseconds(0);
return Math.floor(today.getTime()/1000);
}
,getNowTimestamp:function(){
return Math.floor(new Date().getTime()/1000);
}
};
/**
* do job every time gap
* @param job
* @param options method's params
* @param timegap unit:seconds
*/
var doJobBytimegap = function(job,options,timegap){
job(options);
setTimeout(function(){
doJobBytimegap(job,options,timegap);
},timegap * 1000);
};
/**
* do job at specific time everyday
* @param job
* @param options
*/
var doJobEveryday = function(job,options){
job(options);
setTimeout(function(){
doJobEveryday(job,options)
},ONE_DAY * 1000);
};
/**
* start the job everyday
* @param targettime unit:seconds
* @param job
* @param options
*/
var startJobEveryDay = function(targettime,job,options){
//the time to start
var timegap = targettime - date_util.getNowTimestamp();
setTimeout(function(){
doJobEveryday(job,options);
},timegap * 1000);
};
/**
* start do the job every time gap
* @param start_timestamp first time
* @param timegap
* @param job
* @param options
*/
var startJobEveryTimegap = function(start_timestamp,timegap,job,options){
var timetogo = start_timestamp - date_util.getNowTimestamp();
setTimeout(function(){
doJobBytimegap(job,options,timegap);
},timetogo * 1000);
};
module.exports = {
startJobEveryDay:startJobEveryDay
,startJobEveryTimegap:startJobEveryTimegap
,date_util:date_util
,ONE_DAY:ONE_DAY
};