我有下面安排的工作 (cron =“ 0 0 19 02 01?”)每年1月2日的7点是现在我需要在每年的星期五的第三周的第二个季度进行竞选。我正在使用Spring Cron Scheduler代替石英。
答案 0 :(得分:2)
如果在“每年的第三个星期五的季度”之前的意思是“每个季度的第三个星期五”,那么这样做:
0 0 19 15-21 1,4,7,10 FRI
仅匹配:
0 0 19
)FRI
)15-21
)1,4,7,10
)。测试
CronSequenceGenerator cronGen = new CronSequenceGenerator("0 0 19 15-21 1,4,7,10 FRI");
java.util.Date date = java.sql.Date.valueOf("2018-01-01");
for (int i = 0; i < 12; i++) {
date = cronGen.next(date);
System.out.println(new java.text.SimpleDateFormat("EEE, MMM d, yyyy 'at' hh:mm:ss a").format(date));
}
输出
Fri, Jan 19, 2018 at 07:00:00 PM
Fri, Apr 20, 2018 at 07:00:00 PM
Fri, Jul 20, 2018 at 07:00:00 PM
Fri, Oct 19, 2018 at 07:00:00 PM
Fri, Jan 18, 2019 at 07:00:00 PM
Fri, Apr 19, 2019 at 07:00:00 PM
Fri, Jul 19, 2019 at 07:00:00 PM
Fri, Oct 18, 2019 at 07:00:00 PM
Fri, Jan 17, 2020 at 07:00:00 PM
Fri, Apr 17, 2020 at 07:00:00 PM
Fri, Jul 17, 2020 at 07:00:00 PM
Fri, Oct 16, 2020 at 07:00:00 PM