Cron表达式
一、前言
在开发中,我们往往需要用到定时任务(quartz)来实现业务需求;
往往头疼的不是逻辑,而是最后的,如何定义Cron表达式(不难,but容易忘 ^_^)。
现总结如下:
二、Cron表达式定义
①、列 举几个cron表达式示例:
0 0 0 * * ? 含义:每天0:00执行一次定时任务
0 0 0 ? * MON 含义:每周周一0:00执行一次定时任务
0 0 0 1 * ? 含义:每月1号0:00执行一次定时任务
②、这 样就可以确定格式:
【 秒 分 时 日 月 周 年 】,其中年是可选类型,也就是说他如果在不设定年分的情况下是每年。
↓↓↓↓↓↓↓↓
③、格 式定义
字段
允许值
允许的特殊字符
Seconds (秒) 0-59
, - * /
Minutes(分) 0-59
, - * /
Hours(时) 0-23
, - * /
Day-of-Month(天) 1-31
, - * ? / L W C
Month(月) 1-12 或者 JAN-DEC (a)
, - * /
Day-of-Week(周) 1-7 或者 SUN-SAT (b)
, - * ? / L C #
年(可选字段)
留空, 1970-2099
, - * /
(a). JAN,FEB,MAR,APR,MAY,JUNE,JULY,AUG,SEP,OCT,NOW,DEC
(b). SUN,MON,TUE,WED,THU,FRI,SAT
③、特 殊字符定义
“*”字符: 通配符,指定所有的值;
eg: 0 * * * * ? 表示每分钟执行一次
eg: 0 * * ? * * 表示每分钟的00秒执行一次
“?”字符: 只在日期域和星期域中使用,指定"非明确的值";
eg: 0 10 18 15 3 ? 表示每年三月的第15天,下午6点10分都执行一次
eg: 0 10 18 ? 3 WEB 表示每年3月的每个星期三,下午6点10分都执行一次
“,”字符: 表示列出枚举值;
eg: 10,20 * * ? * * 表示每分钟的第10秒与第20秒都执行一次
eg: 0 10,20 * 1,2 * ? 表示每月的第1天与第2天的,每小时的第
10分钟与第20分钟都执行一次
“-”字符: 指定一个范围;
eg: 0 10 18 1-5 * ? 表示每月的1号到5号(包含1/5号,每月共计5天),
下午6点10分都执行一次
eg: 0 10-15 * ? * * 表示每小时的第10分钟到第15分钟(包含10/15分钟,
每小时共计5分钟)都执行一次
“/”字符: 指定一个值的增加幅度。n/m表示从n开始,每次增加m;
eg: 5/20 * * ? * * 表示每分钟的第5秒,第25秒,第45秒都执行一次
eg: 0 * 2/2 ? * * 表示每天的第2/4/6/8.../22小时的0分0秒都执行一次
“L”字符: 只在日期域和星期域中使用,用在日表示一个月中的最后一天,
用在周表示该月最后一个星期X;
“W”字符:只在日期域出现,指定离给定日期最近的工作日(周一到周五),
“L”和“W”可以在日期域中联合使用,LW表示这个月最后一周的工作日;
“#”字符: 只在星期域中出现,表示该月第几个周X。6#3表示该月第3个周五;
eg: * * * ? * 3#4 表示每月的第4个星期的周2,凌晨都执行一次
eg: * * * ? * 6#2 表示每月的第2个星期的周5,凌晨都执行一次
“C”字符: 只在日期域和星期域出现,这个字符依靠一个指定的“日历”。
三、常用Cron表达式示例
- */5 * * * * ? :每隔5秒执行一次;
- 0 */1 * * * ? :每隔1分钟执行一次;
- 0 0 23 * * ? :每天23点执行一次;
- 0 0 1 * * ? :每天凌晨1点执行一次;
- 0 0 1 1 * ? :每月1号凌晨1点执行一次;
- 0 0 23 L * ? :每月最后一天23点执行一次;
- 0 0 1 ? * L :每周星期天凌晨1点实行一次;
- 0 0 2 1 * ? * :表示在每月的1日的凌晨2点执行;
- 0 0 12 * * ? :每天中午12点执行;
- 0 15 10 ? * * :每天上午10:15执行 ;
- 0 15 10 * * ? :20052005年的每天上午10:15执行 ;
- 0 * 14 * * ? :在每天下午2点到下午2:59期间的每1分钟执行 ;
- 0 0/5 14 * * ? :在每天下午2点到下午2:55期间的每5分钟执行 ;
- 0 26,29,33 * * * ? :在26分、29分、33分执行一次;
- 0 0 0,13,18,21 * * ? :每天的0点、13点、18点、21点都执行一次;
- 0 15 10 ? * MON-FRI :表示周一到周五每天上午10:15执行;
- 0 15 10 ? 6L 2002-2006 :表示2002-2006年的每个月的最后一个星期五上午10:15执行;
- 0 0 10,14,16 * * ? :每天上午10点,下午2点/4点执行;
- 0 0/30 9-17 * * ? :朝九晚五工作时间内每半小时执行;
- 0 0 12 ? * WED :表示每个星期三中午12点执行;
- 0 0/5 14,18 * * ? :在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟执行 ;
- 0 0-5 14 * * ? :在每天下午2点到下午2:05期间的每1分钟执行 ;
- 0 10,44 14 ? 3 WED :每年三月的星期三的下午2:10和2:44执行 ;
- 0 15 10 ? * MON-FRI :周一至周五的上午10:15执行 ;
- 0 15 10 15 * ? :每月15日上午10:15执行 ;
- 0 15 10 L * ? :每月最后一日的上午10:15执行 ;
- 0 15 10 ? * 6L :每月的最后一个星期五上午10:15执行 ;
- 0 15 10 ? * 6L 2002-2005 :2002年至2005年的每月的最后一个星期五上午10:15执行 ;
- 0 15 10 ? * 6#3 :每月的第三个星期五上午10:15执行 ;
四、友情链接
在 线自动生成Cron表达式网址:
Now ~ ~ ~写到这里,就写完了,如果有幸帮助到你,请记得关注我,共同一起见证我们的成长。
小结
谢谢观赏,我叫猿医生。
猿友推荐:正在奔跑的程序猿