如何使用cron-utils生成包含多个星期几的Quartz Cron表达式
解决cron-utils构建多值星期几Cron表达式的问题
嘿,刚好我熟悉cron-utils的用法,这就帮你搞定多个星期几的配置!
首先明确Quartz的星期几编码规则:1代表周日,2代表周一,以此类推,7代表周六,你例子里的1,3,7对应周日、周二、周六是完全正确的。
在cron-utils的CronBuilder中,withDoW()方法支持传入多个离散值,只需要给on()方法同时传入多个星期几的编码参数就行,不用单独写多个on()拼接。
修正后的完整代码如下:
CronDefinition definition = CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ); CronBuilder cronBuilder = CronBuilder.cron(definition) .withYear(always()) .withMonth(always()) .withDoM(questionMark()) .withHour(on(0)) .withMinute(on(0)) .withSecond(on(0)) .withDoW(on(1, 3, 7)); // 传入多个星期几的编码 // 生成最终的Cron表达式 String cronExpression = cronBuilder.buildAsString(); // 输出结果就是你需要的:0 0 0 ? * 1,3,7 *
简单解释下:
on(1, 3, 7)会直接转换成Cron表达式里的1,3,7部分- 因为你用的是Quartz类型的Cron定义,所以星期几的编码规则完全匹配你的需求
这样运行后就能生成你想要的多星期几的Cron表达式啦!
内容的提问来源于stack exchange,提问作者Leah
相关产品推荐
相关产品推荐

