Cron表达式介绍
admin
2024-05-11 07:35:11

Cron表达式介绍

cron 表达式本质上就是一个字符串,该字符串由 6 个空格分为 7 个域,每一个域代表一个时间含义。

通常定义 “年” 的部分可以省略,所以表达式常见形式是6个域。

根据“年”的部分是否省略,cron表达式通常有一下两种格式:

  1. {秒} {分钟} {小时} {日期} {月份} {星期}
  2. {秒} {分钟} {小时} {日期} {月份} {星期} {年份(可为空)}

记忆:秒分时天月周

下面说一下每个位置允许的值,以及一些案例,足够我们掌握cron表达式。

允许出现的值范围(都是整数)允许出现的字符
0-59, - * /
0-59, - * /
0-23, - * /
日期1-31, - * / ? L C W
1-12 或者使用英文JAN-DEC, - * /
星期1-7或者使用英文SUN-SAT, - * / ? L C #
年(可选)1970-2099, - * /

星期(周)域中 1 代表星期日,7 代表星期六;如果使用英文的话,周一至周日分别是:MON、TUES、THUR、FRI、SAT、SUN。

要么只规定日期,要么只规定星期,两者基本上不会同时规定的。

允许出现的字符含义

以下 4 个字符可以出现在所有域中:

  • , 表示列出枚举值,符号前和符号后是递增的值。例如:在域使用5,20,则意味着在5分和20分的时候各触发一次,总共两次。
  • - 表示范围,例如在域使用5-20,表示从第5分钟到第20分钟每分钟触发一次
  • * 表示该域允许范围中的所有值。假如在域使用*, 即表示每分钟都会触发事件。
  • / 符号前表示开始时间,符号后表示每次递增的值,表示从符号前时间开始,每隔多长时间触发一次。例如在域使用5/13,则意味着从第5秒开始触发一次,然后在此分钟内每隔13秒触发一次(意味着下一分钟会重新从第5秒开始),其他域中使用时过程相同。

下面是特殊的字符:

  • ? 表示没有说明的值,不关心该字段的值(满足其他域指定的条件就会触发)。只能用在日期和星期两个域,这两个域会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ? 其中最后一位只能用?表示不关心是周几。

    1. *表示允许的所有值,实际上等于将所有有效值都列上,如果将上面的?改成*,意思就是星期内的每一天,这就会和指定的日期是冲突的,所以星期和日期,两者只能指定一个)。
    2. ?也不能同时出现在这两个域中,而且两个域中必须指定一个。
  • L 表示最后,只能出现在 日期星期域。

    单独使用时,表示最后。例如在日期域中使用,表示这个月最后一天;在星期域中使用表示这个月的每周六

    除此之外,用在星期域中时,还可以搭配数字,表示这个月的最后一个周几。例如1L,表示这个月的最后一个周日。

  • W 表示有效工作日(周一到周五),只能出现在日期域。系统将在离指定日期的最近的有效工作日触发事件

    • 例如:在 日期域 使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一 到星期五中的一天,则就在5日触发。
    • 另外一点,W的最近寻找不会跨过月份,例如 2023年4月30日是周日,指定0 0 0 30W 4 ? 2023,则它会在4月28日执行。
    • LW:表示这个月的最后一个工作日。
  • # 只能用在星期域上。符号前面数字表示周几,后面数字表示第几个,用来指定某个月的第几个星期几。例:在星期字段中用"1#2"指这个月第2个周日(1指周五,2指第2个)。如果指定的日期不存在,触发器就不会触发。


可以搜在线cron网站,对cron表达式进行校验或者查看运行时间。

【END】

相关内容

热门资讯

敦煌壁画的守护人--敦煌戈徒旅... 昨天刷抖音本来是想随便打发下时间,结果一个“穿越千年的敦煌色彩”的视频直接把我钉在原地,越看越入迷,...
湖南红色旅游主题口号及形象标识... 近日,由湖南省文化和旅游厅主办的湖南红色旅游主题口号及形象标识(LOGO)征集活动圆满结束,获奖作者...
2024年山西省旅游业大数据报... 今天分享的是:2024年山西省旅游业大数据报告 报告共计:20页 2024年山西省旅游业实现高质量增...
中国跻身南极第二大客源国,深圳... 深圳商报·读创客户端记者 范宏韬 11月18日,俞敏洪一连发布10条南极旅行视频,从穿越德雷克海峡到...
螺髻山温泉撷影 螺髻山温泉位于四川省凉山彝族自治州普格县螺髻山镇,该景区是我国山地中极为罕见且保存完好的第四纪古冰川...