【发布时间】:2020-11-02 06:30:44
【问题描述】:
我需要构建一个 cron-validator。 这是一个 cron 表达式,意思是每 30 秒一次。
*/30 * * * * *
任务是在时间少于 30 秒时显示错误。 例子: 因此,如果我写以下内容,也就是说,每 10 秒,
*/10 * * * * *
它应该显示一条错误消息“请输入超过 30 秒”。 这是示例函数,表达式是 cron 表达式,限制以毫秒为单位,所以如果我通过 30 秒,它应该验证 30 秒。
function cronValidator(expression = '', limit = 30000){}
到目前为止,我已经尝试过:
function cronValidator(expression = '', limit = 30000) {
// filter the number of seconds from expression
const [seconds] = expression.match(/(\d+)/);
// convert seconds into miliseconds
const milisecondsInExpression = seconds * 1000;
if (milisecondsInExpression < limit) {
console.error(`Please enter more than ${limit / 1000} seconds.`);
} else {
console.log('You are good to go.');
}
}
const cronExp = '*/31 * * * * *';
cronValidator(cronExp, 40000);
但它不起作用,原因:
- 限制或表达式可以是分钟或小时。不只是几秒钟。这意味着普通的正则表达式是不够的。
【问题讨论】:
-
不是每 30 秒,而是每 30 分钟。
-
Crontab 只有分钟粒度,没有秒数。
-
只有 5 个时间字段:分钟、小时、天、月、工作日。
-
请验证您的 cron 表达式是否有效。你可以在这里查看crontab.guru
标签: javascript node.js cron cron-task