用过quartz才发现如此的好用,由其是使用cron来表达时间,简直不要太赞。不过他的cron表达式和crontab的cron表达式还是稍有不同的。
格式
* * * * * ? *
秒 分 时 天 月 周 年
取值范围
- “日”和”周几”不能同时为*和数字,也不能同时为?,否则会报错
- 年若为*,可以被省略
- Cron表达式的格式:秒 分 时 日 月 周 年(可选)
字段名 | 允许的值 | 允许的特殊字符 |
---|---|---|
秒 | 0-59 | , - * / |
分 | 0-59 | , - * / |
小时 | 0-23 | , - * / |
日 | 1-31 | , - * ? / L W C |
月 | 1-12 or JAN-DEC | , - * / |
周几 | 1-7 or SUN-SAT | , - * ? / L C # |
年(可选字段)empty | 1970-2099 | , - * / |
特殊字符解释
*:每一(秒/分…)执行
x/y:每隔x执行,从y开始
x,y:在第z、y执行(周一周二执行:* * * ? * MON,TUE *)
x-y:周期从x到y执行(每年6-8月执行:* * * * 6-8 ? *)
L:这个月的最后一天(* * * L * ? *)
LW:这个月的最后一个工作日(* * * LW * ? *)
nL:这个月的最后一个星期n(* * * nL * ? *)
L-n:在本月底前n天(* * * L-n * ? *)
x#y:在这个月的第y个星期x(* * * ? * 5#2 *)
nW:最近的工作日(周一至周五)至本月n日(* * * nW * ? *)
注意
一周从星期天开始计数,周天为1,周六为7
表达式示例
表达式 | 解释 |
---|---|
0 * * * * ? | 每1分钟触发一次 |
0 0 * * * ? | 每天每1小时触发一次 |
0 0 10 * * ? | 每天10点触发一次 |
0 * 14 * * ? | 在每天下午2点到下午2:59期间的每1分钟触发 |
0 30 9 1 * ? | 每月1号上午9点半 |
0 15 10 15 * ? | 每月15日上午10:15触发 |
*/5 * * * * ? | 每隔5秒执行一次 |
0 */1 * * * ? | 每隔1分钟执行一次 |
0 0 5-15 * * ? | 每天5-15点整点触发 |
0 0/3 * * * ? | 每三分钟触发一次 |
0 0-5 14 * * ? | 在每天下午2点到下午2:05期间的每1分钟触发 |
0 0/5 14 * * ? | 在每天下午2点到下午2:55期间的每5分钟触发 |
0 0/5 14,18 * * ? | 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 |
0 0/30 9-17 * * ? | 朝九晚五工作时间内每半小时 |
0 0 10,14,16 * * ? | 每天上午10点,下午2点,4点 |
0 0 12 ? * WED | 表示每个星期三中午12点 |
0 0 17 ? * TUES,THUR,SAT | 每周二、四、六下午五点 |
0 10,44 14 ? 3 WED | 每年三月的星期三的下午2:10和2:44触发 |
0 15 10 ? * MON-FRI | 周一至周五的上午10:15触发 |
0 0 23 L * ? | 每月最后一天23点执行一次 |
0 15 10 L * ? | 每月最后一日的上午10:15触发 |
0 15 10 ? * 6L | 每月的最后一个星期五上午10:15触发 |
0 15 10 * * ? 2005 | 2005年的每天上午10:15触发 |
0 15 10 ? * 6L 2002-2005 | 2002年至2005年的每月的最后一个星期五上午10:15触发 |
0 15 10 ? * 6#3 | 每月的第三个星期五上午10:15触发 |