最近做的云平台项目中定时任务的模块使用到了quartz,定时表达式需从数据库中读取并执行。
特意学习并记录一下。
表达式说明:
corn从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份
秒(Seconds) |
0~59的整数 |
, - * / |
四个字符 |
分(Minutes) |
0~59的整数 |
, - * / |
四个字符 |
小时(Hours) |
0~23的整数 |
, - * / |
四个字符 |
日期(DayofMonth) |
1~31的整数(但是需要考虑你月的天数) |
,- * ? / L W C |
八个字符 |
月份(Month) |
1~12的整数或者 JAN-DEC |
, - * / |
四个字符 |
星期(DayofWeek) |
1~7的整数或者 SUN-SAT (1=SUN) |
, - * ? / L C # |
八个字符 |
年(可选,留空)(Year) |
1970~2099 |
, - * / |
四个字符 |
1)*:表示匹配该域的任意值。假如在Minutes域使用*, 即表示每分钟都会触发事件。
2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。
3)-:表示范围。例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
4)/:表示起始时间开始触发,然后每隔固定时间触发一次。例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.
5),:表示列出枚举值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。
6)L:表