2013-11-22 226 views
2

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

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

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

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

回答

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

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

从上午3点开始,每天下午23点结束0分钟的火灾。

1

由两个答案错误我正在为我留着撇号开始和我小时结束......很无聊的上述判断

我设法解决这个问题通过使用3-23/4为每小时这从上午3点开始,然后每隔4小时(对其他答案进行不同的处理)