一、Cron表达式简介
Cron表达式是一个用于设置计划任务的字符串,该字符串以5或6个空格分隔,分为6或7个域,每一个域代表任务在相应时间、日期或时间间隔执行的规则【Cron表达式最初是在类Unix操作中系统中使用的,但现在已经广泛应用于各种操作系统和编程语言中】。
Cron表达式常用于定时调度任务中(可通过Cron表达式来指定任务在某个时间点或进行周期性执行任务);Cron表达式的框架有:Quartz
Quartz.NET开源库实现作业定时调度——常用示例_quartz.net 完整示例
https://blog.csdn.net/xiaochenXIHUA/article/details/118462070?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169565142516800188570812%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=169565142516800188570812&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-118462070-null-null.nonecase&utm_term=quartz&spm=1018.2226.3001.4450
二、Cron表达式解析
Cron表达式,分为7部分,每个域代表一个含义(前6个字段是必须的,最后一个是可选的),如下所示:
| 域 | 秒 (second) | 分 (minute) | 时 (hour) | 日 (day) | 月 (month) | 星期几 (week) | 年份 (year) |
| 取值范围 | 0~59 | 0~59 | 0~23 | 1~31 | 1~12或 JAN-DEC | 1-7(1表示星期天) | 可选,1970~2099或者空 |
| 可出现的字符 | , - * / | , - * / | , - * / | , - * / ? L W C | , - * / | , - * / ? L C # | , - * / |
三、Cron表达式字符解析
| 序号 | 字符 | 字符说明 |
| 1 | , | 指定某几个值;比如【3,5,8】在秒字段里面表示每分钟的第3,第5,第8秒都会执行,以此类推。 |
| 2 | - | 指定的范围;比如【1-8】在秒字段里面表示每分钟的第1,第2,第3,第4,第5,第6,第7,第8秒都会执行,以此类推。 |
| 3 | * | 所有;在不同字段上都表示要所有,比如:每秒,每分,每小时等 |
| 4 | / | 指定值的起始和增加幅度;比如【5/6】在秒字段表示每分钟的第5秒开始,每隔6秒执行一次(即第5秒,第11秒,第17秒,第23秒,第29,第35,第41,第47,第53,第59秒开始执行) |
| 5 | ? | 仅用于【日】和【周】字段;因为在指定某日和周几的时候,这两个值实际上是冲突的,所以需要用【?】标识不生效的字段;比如【6 6 * * * ?】表示每年每月每日每小时的6分6秒触发任务,而这里的周就没有效果了 |
| 序号 | 字符 | 字符说明 |
| 1 | L | 最后;L只能出现在日和星期域;在日域中,L表示一个月的最后一天;在星期域中,L表示一个星期的最后一天 |
| 2 | W | 表示有效工作日(周一到周五);只能出现在日域,系统将在离指定日期的最近的有效工作日触发事件;比如:在 日使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一 到星期五中的一天,则就在5日触发。另外,W的最近寻找不会跨过月份。 |
| 3 | C | 日历(表示canlendar);例如“1C”在星期域上就是包括日历上的星期日,基本无用 |
| 4 | LW | 这两个字符可以连用,表示在某个月最后一个工作日;比如最后一个星期五 |
| 5 | # | 用于确定每个月第几个星期几;比如在3#3,表示某月的第3个星期二 |
四、常见表达式
| 表达式 | 描述 |
|---|---|
| */1 * * * * ? | 每隔1秒执行一次 |
| */5 * * * * ? | 每隔5秒执行一次 |
| 0 */1 * * * ? | 每隔1分钟执行一次 |
| 0 0 23 * * ? | 每天23点执行一次 |
| 0 0 1 1 * ? | 每月1号凌晨1点执行一次 |
| 0 0 23 L * ? | 每月最后一天23点执行一次 |
| 0 0 1 ? * L | 每周星期六凌晨1点执行一次 |
| 0 26,29,32 * * * ? | 在每小时的26分、29分、32分执行一次 |
| 0 * 14 * * ? | 每天下午14点钟开始到14点59分结束这么一个时间段 |
| 0 0/5 14 * * ? | 每天下午14点到14点55分之间每5分钟触发一次 |
| 0 0/5 14,18 * * ? | 每天下午14点到14点55分 和18点到18点55分之间 每5分钟触发一次 |
| 0 0-5 14 * * ? | 每天下午14点开始到14点05结束 |
| 0 10,44 14 ? 3 WED | 每年三月的星期三的下午2:10和2:44触发 |
| 0 15 10 ? * MON-FRI | 周一至周五的上午10:15触发 |
| 0 10,14,16 * * ? | 每天上午10点,下午2点,4点 |
| 0/30 9-17 * * ? | 朝九晚五工作时间内每半小时 |
| 0 0 12 1/5 * ? | 每个月从第一天开始每隔5天中午12点触发一次 |
| 0 11 11 11 11 ? | 每年11月11号11点11分 |
| 0 0 0,13,18,21 * * ? | 每天的0点、13点、18点、21点都执行一次 |
| 0 0 10,14,16 * * ? | 每天上午10点,下午2点,4点 |
| 0 * 14 * * ? | 在每天下午2点到下午2:59期间的每1分钟触发 |
| 0 12 ? * WED | 表示每个星期三中午12点 |
| 0 0 12 * * ? | 每天中午12点触发 |
| 0 * 14 * * ? | 在每天下午2点到下午2:59期间的每1分钟触发 |
| 0 0/5 14 * * ? | 在每天下午2点到下午2:55期间的每5分钟触发 |
| 0 0/5 14,18 * * ? | 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 |
| 0 0-5 14 * * ? | 在每天下午2点到下午2:05期间的每1分钟触发 |
| 0 15 10 15 * ? | 每月15日上午10:15触发 |
| 0 15 10 L * ? | 每月最后一日的上午10:15触发 |
| 0 15 10 ? * 6L | 每月的最后一个星期五上午10:15触发 |
| 0 15 10 ? * 6L 2012-2018 | 2012年至2018年的每月的最后一个星期五上午10:15触发 |
| 0 15 10 ? * 6#3 | 每月的第三个星期五上午10:15触发 |
| 0 15 10 ? * * | 每天上午10:15触发 |
| 0 15 10 * * ? 2018 | 2018年的每天上午10:15触发 |
| 0 0/5 14 * * ? | 在每天下午2点到下午2:55期间的每5分钟触发 |
| 0 0 2 1 * ? * | 表示在每月的1日的凌晨2点调度任务 |
| 0 15 10 ? * MON-FRI | 表示周一到周五每天上午10:15执行作业 |
| 0 15 10 ? 6L 2002-2006 | 表示2002-2006年的每个月的最后一个星期五上午10:15执行作 |
| 0 0 23 * * ? | 每天 |
| 0 59 23 ? * SUN | 每周 |
| 0 59 23 L * ? | 每月 |
| 0 59 23 L 3,6,9,12 ? | 每季度 |
| 0 0 0 31 12 ? | 每年 |
五、Cron表达式验证网站
在线Cron表达式生成器通过这个生成器,您可以在线生成任务调度比如Quartz的Cron表达式,对Quartz Cron 表达式的可视化双向解析和生成.
https://cron.qqe2.com/
quartz/Cron/Crontab表达式在线校验工具-BeJSON.com可以看cron表达式执行时间,可以验证你的cron表达式是否正确
https://www.bejson.com/othertools/cronvalidate/
六、.NET的定时调度任务组件有哪些
C#/.NET/.NET Core定时任务调度组件有哪些? - 知乎原文由Rector首发于 码友网 之 C#/.NET/.NET Core应用程序编程中实现定时任务调度的方法或者组件有哪些,Timer,FluentScheduler,TaskScheduler,Gofer.NET,Coravel,Quartz.NET还是Hangfire?摘要C#/.NET/.NET Core的…
https://zhuanlan.zhihu.com/p/89976729
















![信息学奥赛一本通 2074:【21CSPJ普及组】分糖果(candy) | 洛谷 P7909 [CSP-J 2021] 分糖果](https://img-blog.csdnimg.cn/b3afcbff4e2f40feb76e33d95adf6dca.png)

