首页 > 其他分享 >SpringTask Cron表达式

SpringTask Cron表达式

时间:2024-06-22 13:29:19浏览次数:18  
标签:10 15 SpringTask 触发 Cron 20 表达式 DayofMonth

Cron表达式格式

1.Cron表达式格式

Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:

 秒     分    时    一个月第几天  月    一个星期第几天     年

(1)Seconds Minutes Hours DayofMonth Month DayofWeek Year
(2)Seconds Minutes Hours DayofMonth Month DayofWeek
每一个域可出现的字符如下:
Seconds:可出现", - * /"四个字符,有效范围为0-59的整数
Minutes:可出现", - * /"四个字符,有效范围为0-59的整数
Hours:可出现", - * /"四个字符,有效范围为0-23的整数
DayofMonth:可出现", - * / ? L W C"八个字符,有效范围为1-31的整数
Month:可出现", - * /"四个字符,有效范围为1-12的整数或JAN-DEc
DayofWeek:可出现", - * / ? L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推
Year:可出现", - * /"四个字符,有效范围为1970-2099年
每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是:
(1):表示匹配该域的任意值,假如在Minutes域使用, 即表示每分钟都会触发事件。
(2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和 DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 ?, 其中最后一位只能用?,而不能使用,如果使用*表示不管星期几都会触发,实际上并不是这样。
(3)-:表示范围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
(4)/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.
(5),:表示列出枚举值值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。
(6)L:表示最后,只能出现在DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。
(7)W: 表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一 到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份
(8)LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。
(9)#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。

Cron表达式例子

2.1常用Cron表达式例子
每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

2.2常用Cron表达式例子
"0 0 10,14,16 * * ?" 每天上午10点,下午2点,4点
"0 0/30 9-17 * * ?" 朝九晚五工作时间内每半小时
"0 0 12 ? * WED" 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"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 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发

标签:10,15,SpringTask,触发,Cron,20,表达式,DayofMonth
From: https://blog.csdn.net/2301_80488214/article/details/139881128

相关文章

  • Hutool将Cron表达式转换为日期字符串
    在Java开发中,处理定时任务是常见的需求。Cron表达式是一种强大的工具,用于定义这些定时任务的执行时间。然而,有时我们需要将Cron表达式转换为具体的日期字符串,以便于展示或进一步处理。本文将介绍如何使用Hutool工具库来实现这一转换。准备工作在开始之前,确保你的项目中包含了......
  • C#弃元表达式的用法
    原文地址:http://cshelloworld.com/home/detail/1803462343674433536弃元符号是什么弃元符号在C#中只是一个下划线_,当程序员不想关注某些变量的时候,可以使用这个符号。用法一:忽略方法的返回值当C#中某个方法有返回值,但是这个返回值对程序来说没有用处,同时不想在后面的代码中使......
  • Shell 编程之正则表达式与文本处理器
    Shell编程之正则表达式与文本处理器一、正则表达式基础正则表达式元字符总结二、文本处理器sed工具awk工具sort工具uniq工具tr工具三、总结在Shell编程中,正则表达式(RegularExpression)和文本处理器(如grep,sed,awk等)是两个极其重要的工具,它们允许我们以复杂......
  • 问题 M: 中缀表达式转后缀表达式
    题目描述   输入一个中缀表达式,编程输出其后缀表达式,要求输出的后缀表达式的运算次序与输入的中缀表达式的运算次序相一致。为简单起见,假设输入的中缀表达式由+(加)、-(减)、×(乘)、/(除)四个运算符号以及左右圆括号和英文字母组成,其中算术运算符遵守先乘除后加减的运算规则。假设......
  • CSP历年复赛题-P8815 [CSP-J 2022] 逻辑表达式
    原题链接:https://www.luogu.com.cn/problem/P8815题意解读:计算逻辑表达式的值以及&,|短路操作的次数。解题思路:又是一道经典的中缀表达式的变形问题,如果对中缀表示式如何求值不理解,移步https://www.acwing.com/problem/content/3305/进行复习如果对表示式如何构建树形结构以及......
  • 代码随想录 算法训练营day11 Leetcode150 逆波兰表达式求值 Leetcode239 滑动窗口最大
    Leetcode150逆波兰表达式求值题目链接栈classSolution{publicintevalRPN(String[]tokens){Deque<Integer>stack=newLinkedList();for(Strings:tokens){if("+".equals(s)){//leetcode内置jdk的问题,不能使用==......
  • 变量、数据类型、表达式、运算符
    一、变量1.概念:计算机中的一块内存空间,存储数据的基本单元2.变量的组成部分:数据类型、变量名、数据3.语法: (1)先声明,再赋值数据类型变量名;inta;变量名=数据;a=5;(2)声明的同时赋值:数据类型变量名=值;intb=8;(3)同时定义多个同类型的变量:......
  • vue3cron表达式
     引用:js部分importcmCronfrom'../../components/cmCron/index.vue';constshortcuts=[     {      text:"每天8点和12点(自定义追加)",      value:"008,12**?"     }    ]; 模板部分: ......
  • Lambda表达式:会这10招
    引言在Java8之前,Java的语法相对冗长,尤其是在处理集合操作和多线程编程时,常常需要大量的样板代码。自Java8引入Lambda表达式以来,Java编程变得更加简洁和高效,不仅减少了代码量,还提升了代码的可读性和可维护性。今天就来聊聊几种工作中很常用的Lambda表达式应用场景,走过路过别错......
  • @符号在DC等过滤器表达式中的用途
    在TCL脚本中,特别是在使用电子设计自动化(EDA)工具(如SynopsysDesignCompiler、CadenceInnovus等)时,@符号在过滤器表达式中有特定的用途。用途和解释@ref_name:@符号在过滤表达式中用于明确指示属性名称。属性是指对象的特定特征或信息(如ref_name)。*:通配符,用于匹配任何字符串。@......