一、Quartz中设置cron时间表达式
Quartz中设置cron时间表达式的格式为: <!-- s m h d m w(?) y(?) -->, 分别对应: 秒、分、小时、日、月、周、年。
1.每天什么时候执行
每天23:59:00开始执行,cron表达式为:0 59 23 * * ?
每天11:01,11:02,11:03; 12:01,12:02,12:03分执行任务,cron表达式为:0 1,2,3 11,12 * * ?
2.每隔多久执行
Cron表达式的时间字段,除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能,具体如下:
●星号(*):可用在所有字段中,表示对应时间域的每一个时刻。例如,*在分钟字段时,表示“每分钟”。
●问号(?):该字符只在日期和星期字段中使用,但是不能在这两个域上同时使用。它通常指定为“无意义的值”,相当于点位符。
●减号(-):表达一个范围。例如,在小时字段中使用“10-12”,则表示从10到12点,即10,11,12。
●逗号(,):表达一个列表值。例如,在星期字段中使用“MON,WED,FRI”,则表示星期一,星期三和星期五。
●斜杠(/):x/y表达一个等步长序列,x为起始值,y为增量步长值。如在分钟字段中使用0/15,则表示为0,15,30和45秒,而5/15在分钟字段中表示5,20,35,50,你也可以使用*/y,它等同于0/y。
二、Quartz cron 表达式的格式与UNIX cron 格式比较
Quartz cron 表达式的格式十分类似于 UNIX cron 格式,但还是有少许明显的区别。
第一是: Quartz 的格式向下支持到秒级别的计划,而 UNIX cron 计划仅支持至分钟级。很多我们的触发计划,要基于秒级递增(例如,每45秒),因此,这是一个非常好的差异。
第二是:在 UNIX cron 里,要执行的作业(或者说命令)是存放在 cron 表达式中的,在第六个域位置上。Quartz 用 cron 表达式存放“执行计划”。引用了 cron 表达式的CronTrigger ,在计划的时间里会与 job 关联上。
第三个是:表达式中支持域的数目不同。UNIX 给出五个域(分、时、日、月和周),Quartz 提供七个域。表 5.1 列出了 Quartz cron 表达式支持的七个域。
表 5.1. Quartz