我需要在周一和周三每隔一段时间触发我的邮件。我在我的应用程序中使用Java Spring。我已经尝试使用这个cron表达式00 15 11 ? * MONDAY#1
并且在星期三也是如此,但是它在该月的1个星期一和星期三触发。我想要的是它应该在每个月的第一,第三和第五周的周一和周三触发。
有人可以帮我创建这个cron表达式。
答案 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