CRON:在特定时间运行工作

时间:2013-11-22 11:55:10

标签: spring cron spring-batch

我有一个Spring批处理应用程序,我正在使用CRON来设置此应用程序运行的频率。但我遇到的问题是我想在特定的时间内完成工作

3 am
7 am
11 am
3 pm
7 pm
11 pm

正如你所看到的那样,它是每4个小时但是从凌晨3点开始,所以我不能在时间格式的小时部分使用*/4,因为这将在凌晨4点开始工作

我还在小时部分尝试了'3,7,11,15,19,23',但这也不起作用(猜测它只适用于分钟部分)。有人知道我该怎么做吗?

3 个答案:

答案 0 :(得分:4)

使用

@Scedule(cron="0 0 3/4 * * ?")

模式x/y表示:<timepart> mod y = x

@Scedule(cron="0 0 3,7,11,15,19,21 * * ?")

根据Quartz Cron Trigger Tutorial

  

'/'字符可用于指定值的增量。对于   例如,如果在“分钟”字段中输入“0/15”,则表示“每15天”   分钟,从零分钟开始。如果您使用'3/20'   分钟字段,它意味着'每小时20分钟,   从第三分钟开始 - 或者换句话说,它是相同的   在“分钟”字段中指定“3,23,43”。注意细微之处   “/ 35”确实*并不意味着“每35分钟一次” - 它的意思是“每35分钟一次   小时,从零分钟开始“ - 或换句话说,相同的   指定'0,35'。

答案 1 :(得分:1)

  

0 0 3,7,11,15,19,23 * *?

每天凌晨3点开始0分钟,每天23:00结束。

答案 2 :(得分:1)

根据上面的两个答案来判断我正在制作的错误是我在小时的开始和结束时保持撇号...非常愚蠢

我设法通过使用3-23/4来解决这个问题,因为这从凌晨3点开始,然后每隔四个小时一次(只是以不同的方式对其他答案进行处理)