我有这个简单的cron作业功能:
var job = new cronJob('* * * * * *', function () {
// do some form of stuffs...
}, function () {
console.log('DelCron Job finished.');
}, true, 'Asia/Calcutta');
这将每秒运行一次。
我的问题:
在mysql数据库中,我有一个名为" profsms"在此表中,我有 scheduledTime 字段。
如果scheduledTime = 18/01/2018 10.00AM
我想在那个时候动态运行那个cron作业吗?
答案 0 :(得分:0)
您只需将时间更改为cronjob
计划字符串。
假设字符串看起来像这样
# ┌────────────── second (optional)
# │ ┌──────────── minute
# │ │ ┌────────── hour
# │ │ │ ┌──────── day of month
# │ │ │ │ ┌────── month
# │ │ │ │ │ ┌──── year
# │ │ │ │ │ │
# │ │ │ │ │ │
# * * * * * *
由于您有(dd/mm/yyyy hour.minute(AM/PM))
(18/01/2018 10.00AM)
const convertTimeToCronJobString = (time) => {
let retString = '';
const dmy = time.split(' ')[0];
const d = dmy.split('/')[0];
const m = dmy.split('/')[1];
const y = dmy.split('/')[2];
const hm = time.split(' ')[1];
const h = hm.split(';')[0];
let min = '';
if (hm.split(';')[1].indexOf('AM') > -1) { // AM
min = hm.split(';')[1].replace('AM','');
} else if (hm.split(';')[1].indexOf('AM') > -1) { // PM
min = hm.split(';')[1].replace('PM','');
min = String(Number(min) + 12);
}
return `0 ${min} ${h} ${d} ${m} ${y}` // you want to start at 0th secound
}
现在您只需要将scheduledTime
发送到此函数中,这将返回一个cronjobString。使用该字符串来安排任务。