Cron表达式详细说明

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 Cron表达式详细说明,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

cron表达式

一个完整cron表达式如下:

{} {分钟} {} {} {} {星期} {}
单位 取值范围 允许的通配符 是否必填
0~59 [, – * /]
分钟 0~59 [, – * /]
小时 0~23 [, – * /]
1~31 [, – * / ? L W]
1~12 或 JAN-DEC [, – * /]
星期 1~7(星期日为1)或 SUN-SAT [, – * / ? L #]
不限 [, – * /]

表达式含义

,:在指定字段单位中选择触发定时任务的时间点,如在单位”秒”上写 0,1,3,代表在0、1、3秒都会触发定时任务。

-:在指定字段单位中选择触发定时任务的范围时间,如在单位”秒”上写2-20,代表在2-20秒钟,每秒都会触发一次定时任务。

*:代表每次指定字段单位时间过后都会触发,如:在单位”秒”上写*,代表每秒都会触发一次定时任务。

/:从指定时间开始,每过指定的单位时间都会触发一次,如:在单位”秒”上写20/10,代表从20秒开始,每隔十秒都会执行一次定时任务

?:代表放弃的意思,只能”日”和”星期”使用,必须有一个使用,不能两个字段一起使用,因为”日”和”星期”会有冲突现象,要么设置”星期”,要么设置”日”

错误示例:

30 15 23 6 * *

这个表达式是错误的。从表达式上看,代表的是每年的每月的6号每个星期几的23点15分30秒都会执行一次。

“6号”和”每个星期几”冲突了,具体的星期几已经能够确定是当月的哪天了,如:每个月的每个星期一执行一次定时任务
在这里插入图片描述
这里拿2020年的6月举例,很明显当月的每个星期一对应的就是6月1号、6月8号、6月15号、6月22号、6月29号。
因此在选择星期和日期字段时,必须有一方要放弃。

正确示例:

30 15 23 6 * ?

放弃星期字段,代表每年的每月的6号的23点15分30秒都会执行一次。(没指定”年”字段默认为*

最近10次触发时间(我当前时间为2020-04-22 ):

2020-05-06 23:15:30
2020-06-06 23:15:30
2020-07-06 23:15:30
2020-08-06 23:15:30
2020-09-06 23:15:30
2020-10-06 23:15:30
2020-11-06 23:15:30
2020-12-06 23:15:30
2021-01-06 23:15:30
2021-02-06 23:15:30

正确示例二:

30 15 23 ? * 2

**放弃日期字段,**代表每年的每月的每个星期1(3为星期2,2为星期1,1为星期日,以此类推)的23点15分30秒都会执行一次

最近10次触发时间(我当前时间为2020-04-22 ):

2020-04-27 23:15:30
2020-05-04 23:15:30
2020-05-11 23:15:30
2020-05-18 23:15:30
2020-05-25 23:15:30
2020-06-01 23:15:30
2020-06-08 23:15:30
2020-06-15 23:15:30
2020-06-22 23:15:30
2020-06-29 23:15:30

L:只能在字段”日”和”星期”使用,表示最后的意思(Last),在”日”字段使用,代表这个月的最后一天触发定时任务,在”星期”字段使用,代表这个星期的最后一天触发定时任务

示例:

* * 8 L * ?

表示每年的每个月的最后一天的8点的每分每秒都会执行一次。

W只在”日”字段上生效,代表离此次日期最近的工作日(周一到周五),例如:2W代表2号最近的工作日

示例:

* * 8 2W * ?

查看日历:

在这里插入图片描述

最近10次执行时间:

2020-05-01 08:01:01
2020-06-02 08:01:01
2020-07-02 08:01:01
2020-08-03 08:01:01
2020-09-02 08:01:01
2020-10-02 08:01:01
2020-11-02 08:01:01
2020-12-02 08:01:01
2021-01-01 08:01:01
2021-02-02 08:01:01

#:**只能出现在星期”字段”,**格式为{星期几}#{当月第几周},用于指定当月的第几周的星期几触发定时任务,如:7#1,表示当月的第1周,的星期6(7为星期6,6为星期5,5为星期4,以此类推)触发定时任务

示例:

1 1 8 ? * 7#1

代表每年每个月的第一个星期的星期6的8点1分1秒触发一次定时任务。

最近10次执行时间:

2020-05-02 08:01:01
2020-06-06 08:01:01
2020-07-04 08:01:01
2020-08-01 08:01:01
2020-09-05 08:01:01
2020-10-03 08:01:01
2020-11-07 08:01:01
2020-12-05 08:01:01
2021-01-02 08:01:01
2021-02-06 08:01:01

练习

1,2,3 * 6-10 * * ? *

含义:每月每天的6-10点钟,每分钟的1、2、3秒都会触发一次定时任务

最近10次执行时间:

2020-04-22 17:05:01
2020-04-22 17:05:02
2020-04-22 17:05:03
2020-04-22 17:06:01
2020-04-22 17:06:02
2020-04-22 17:06:03
2020-04-22 17:07:01
2020-04-22 17:07:02
2020-04-22 17:07:03
2020-04-22 17:08:01
30/8 2,3 * * ? *

含义:每月每天的2点、3点中的每分钟的30秒之后,每隔8秒钟执行一次

最近10次执行时间:

2020-04-22 18:02:30
2020-04-22 18:02:38
2020-04-22 18:02:46
2020-04-22 18:02:54
2020-04-22 18:03:30
2020-04-22 18:03:38
2020-04-22 18:03:46
2020-04-22 18:03:54
2020-04-22 19:02:30
2020-04-22 19:02:38
2-10 30 8 1 * ? *

含义:每月的每天的1号8点30分的2-10秒期间,每秒都会执行一次

最近10次执行时间:

2020-05-01 08:30:02
2020-05-01 08:30:03
2020-05-01 08:30:04
2020-05-01 08:30:05
2020-05-01 08:30:06
2020-05-01 08:30:07
2020-05-01 08:30:08
2020-05-01 08:30:09
2020-05-01 08:30:10
2020-06-01 08:30:02
20 30 12 L * ? *

含义:每个月的最后一天的12点30分20秒执行一次

最近10次执行时间:

2020-04-30 12:30:20
2020-05-31 12:30:20
2020-06-30 12:30:20
2020-07-31 12:30:20
2020-08-31 12:30:20
2020-09-30 12:30:20
2020-10-31 12:30:20
2020-11-30 12:30:20
2020-12-31 12:30:20
2021-01-31 12:30:20
1 1 10 3W * ? *

含义:在每个月的3号临近工作日的10点1分1秒执行一次。

最近10次执行时间:

2020-05-04 10:01:01
2020-06-03 10:01:01
2020-07-03 10:01:01
2020-08-03 10:01:01
2020-09-03 10:01:01
2020-10-02 10:01:01
2020-11-03 10:01:01
2020-12-03 10:01:01
2021-01-04 10:01:01
2021-02-03 10:01:01

关于Cron表达式:各位可以来这个网站在线生成Cron表达式:在线生成Cron表达式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/131838.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!