Cron表达式_用于定时调度任务

一、Cron表达式简介

        Cron表达式是一个用于设置计划任务的字符串,该字符串以5或6个空格分隔,分为6或7个域,每一个域代表任务在相应时间、日期或时间间隔执行的规则【Cron表达式最初是在类Unix操作中系统中使用的,但现在已经广泛应用于各种操作系统和编程语言中】。

        Cron表达式常用于定时调度任务中(可通过Cron表达式来指定任务在某个时间点或进行周期性执行任务);Cron表达式的框架有:Quartz

Quartz.NET开源库实现作业定时调度——常用示例_quartz.net 完整示例icon-default.png?t=N7T8https://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个字段是必须的,最后一个是可选的),如下所示:

Cron表达式解析

(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表达式字符解析

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秒触发任务,而这里的周就没有效果了
Cron表达式不常用字符解析
序号 字符 字符说明
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 表达式的可视化双向解析和生成.icon-default.png?t=N7T8https://cron.qqe2.com/

quartz/Cron/Crontab表达式在线校验工具-BeJSON.com可以看cron表达式执行时间,可以验证你的cron表达式是否正确icon-default.png?t=N7T8https://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的…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/89976729

猜你喜欢

转载自blog.csdn.net/xiaochenXIHUA/article/details/133279610
今日推荐