CRON表达式介绍(各域说明及举例)

CRON表达式介绍(各域说明及举例)

一、什么是Cron表达式

cron表达式是一个字符串,该字符串由5个或6个空格分为6个或7个域,每一个域代表一个时间含义。通常用于定时任务。

Cron表达式的每一位含义

第一种:Seconds Minutes Hours DayofMonth Month DayofWeek
第二种:Seconds Minutes Hours DayofMonth Month DayofWeek Year
在这里插入图片描述
通配符含义介绍:
“ , ”——这里指的是在两个以上的时间点中都执行,如果我们在 “分” 这个域中定义为8,12,35,则表示分别在第8分,第12分,第35分执行该定时任务。
“ - ”——这个比较好理解就是指定在某个域的连续范围,如果我们在“时”这个域中定义1-6,则表示在1到6点之间每小时都触发一次,用,表示1,2,3,4,5,6。
“ * ”——表示所有值,可解读为“每”。 如果在“日”这个域中设置*,表示每一天都会触发;
“ ? ”——表示不指定值,使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的8号触发一个操作,但不关心是周几,我们可以这么设置 0 0 0 8 * ?;
“ / ”——在某个域上周期性触发,该符号将其所在域中的表达式分为两个部分,其中第一部分是起始值,除了秒以外都会降低一个单位,比如:在“秒”上定义5/10表示从第5秒开始,每10秒执行一次,而在“分”上则表示从第5秒开始,每10分钟执行一次;
“ L ”——表示英文中的LAST的意思,只能在“日”和“周”中使用。在“日”中设置,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年),在“周”上表示周六,相当于”7”或”SAT”。如果在“L”前加上数字,则表示该数据的最后一个。例如在“周”上设置”7L”这样的格式,则表示“本月最后一个周六”;
“ W ”——表示离指定日期的最近那个工作日(周一至周五)触发,只能在“日”中使用且只能用在具体的数字之后。若在“日”上置”15W”,表示离每月15号最近的那个工作日触发。假如15号正好是周六,则找最近的周五(14号)触发,如果15号是周未,则找最近的下周一(16号)触发。如果15号正好在工作日(周一至周五),则就在该天触发。如果是“1W”就只能往本月的下一个最近的工作日推不能跨月往上一个月推;
“ # ”——表示每月的第几个周几,只能作用于 “周” 上。例如“2#3”表示在每月的第三个周二

常见的表达式

我的常用:
每月2日 12点:0 0 12 2 * ?
每月2日 12点20分:0 20 12 2 * ?
每月2日 12点40分:0 40 12 2 * ?
每月1日 10点30分:0 30 10 1 * ?
每月1日 10点40分:0 40 10 1 * ?
每日8点:0 0 8 * * ?
每月25日 8点:0 0 8 25 * ?
每周一7点:0 0 7 ? * 2
每周一20点30分:0 30 20 ? * 2
每月最后一天:0 0 8 L * ?
每年4月2日 8点:0 0 8 2 4 ? *

其他推荐:
(1)0 0 2 1 * ?——表示在每月的1日的凌晨2点调整任务
(2)0 15 10 ? * MON-FRI——表示周一到周五每天上午10:15执行
(3)0 15 10 ? 6L 2002-2006——表示2002-2006年的每个月的最后一个星期五上午10:15执行
(4)0 0 10,14,16 * * ?——每天上午10点,下午2点,4点
(5)0 0/30 9-17 * * ?——朝九晚五工作时间内每半小时
(6)0 0 12 ? * WED——表示每个星期三中午12点
(7)0 0 12 * * ?——每天中午12点触发
(8)0 15 10 ? * *——每天上午10:15触发
(9)0 15 10 * * ?——每天上午10:15触发
(10)0 15 10 * * ?——每天上午10:15触发
(11)0 15 10 * * ? 2005——2005年的每天上午10:15触发
(12)0 * 14 * * ?——在每天下午2点到下午2:59期间的每1分钟触发
(13)0 0/5 14 * * ?——在每天下午2点到下午2:55期间的每5分钟触发
(14)0 0/5 14,18 * * ?——在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
(15)0 0-5 14 * * ?——在每天下午2点到下午2:05期间的每1分钟触发
(16)0 10,44 14 ? 3 WED——每年三月的星期三的下午2:10和2:44触发
(17)0 15 10 ? * MON-FRI——周一至周五的上午10:15触发
(18)0 15 10 15 * ?——每月15日上午10:15触发
(19)0 15 10 L * ?——每月最后一日的上午10:15触发
(20)0 15 10 ? * 6L——每月的最后一个星期五上午10:15触发
(21)0 15 10 ? * 6L 2002-2005——2002年至2005年的每月的最后一个星期五上午10:15触发
(22)0 15 10 ? * 6#3——每月的第三个星期五上午10:15触发
(23)0/2 * * * * ?——表示每2秒执行任务
(24)0 0/2 * * * ?——表示每2分钟执行任务

注意事项

1、Spring框架中,Cron表达式使用5个空格分割成6个域;日和周可能会冲突,如果在乎日,周使用“?”;如果在乎周,日使用“?”。
2、Spring的表达式只是Cron表达式的子集,它不包含year字段,并且不能使用部分特殊字符,比如上#等。
3、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值