Cron Expression每两周复发一次

时间:2015-09-07 06:08:12

标签: java spring cron cronexpression

我需要在周一和周三每隔一段时间触发我的邮件。我在我的应用程序中使用Java Spring。我已经尝试使用这个cron表达式00 15 11 ? * MONDAY#1并且在星期三也是如此,但是它在该月的1个星期一和星期三触发。我想要的是它应该在每个月的第一,第三和第五周的周一和周三触发。

有人可以帮我创建这个cron表达式。

2 个答案:

答案 0 :(得分:1)

All type of cron exrpession you build from website [Cron Maker] 
I have one solution to meet with your requirement:
Algorithm:
1. Run cron every MON and WED day.


    eg. 0 0 12 ? * MON,WED * 
       Start time   Monday, September 7, 2015 6:10 AM Change
       Next 5 scheduled dates   
       a.   Monday, September 7, 2015 12:00 PM
       b.   Wednesday, September 9, 2015 12:00 PM
       c.   Monday, September 14, 2015 12:00 PM
       d.   Wednesday, September 16, 2015 12:00 PM
       e.   Monday, September 21, 2015 12:00 PM

2. Now pro-grammatically control on odd week. for eg in java


    Calendar c = Calendar.getInstance();
       if(c.get(Calendar.WEEK_OF_MONTH) % 2 != 0) {
             //execute job
       } else {
             //not execute job just skip operation
       }

如果我能够制作实际的cron,那么我会发布它。

答案 1 :(得分:0)

你想要的是

00 15 11 ? * MONDAY#1,MONDAY#3,MONDAY#5,WEDNESDAY#1,WEDNESDAY#3,WEDNESDAY#5"

但我不认为它会起作用,因为使用#时,只允许一个表达式。因此,您必须拥有多个cron条目,如下所示。

00 15 11 ? * MONDAY#1
00 15 11 ? * MONDAY#3
00 15 11 ? * MONDAY#5
00 15 11 ? * WEDNESDAY#1
00 15 11 ? * WEDNESDAY#3
00 15 11 ? * WEDNESDAY#5