每个星期五的第三季度春季cron表达工作

时间:2018-06-27 16:07:28

标签: java spring

我有下面安排的工作 (cron =“ 0 0 19 02 01?”)每年1月2日的7点是现在我需要在每年的星期五的第三周的第二个季度进行竞选。我正在使用Spring Cron Scheduler代替石英。

1 个答案:

答案 0 :(得分:2)

如果在“每年的第三个星期五的季度”之前的意思是“每个季度的第三个星期五”,那么这样做:

0 0 19 15-21 1,4,7,10 FRI

仅匹配:

  • 晚上7点(0 0 19
  • 星期五(FRI
  • 一个月的第三个星期五的日期为15日至21日(15-21
  • 每个季度的第三个星期五是1月,4月,7月或10月(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