首页 > 其他分享 >cron表达式里日期和星期关系

cron表达式里日期和星期关系

时间:2024-04-12 10:46:44浏览次数:42  
标签:星期 cron 互斥 日期 特定 day 表达式 问号

cron表达式里“日期”和“星期”关系是and 、or、互斥的哪一种?官方定义应该是互斥,但各解析器支持可能有差异,如linux的crontab是或的关系

 

关于cronExpression网上可以搜到一大堆官方文档及其翻译,大部分都是出自同一篇转文,翻译的部分充满了错误和语病,尤其是关于问号(?)的解释部分,实在是没法看。还是自己研究一下吧。

 

官方文档上提到问号时是这样说的:

The '?' character is allowed for the day-of-month and day-of-week fields. It is used to specify 'no specific value'. This is useful when you need to specify something in one of the two fileds, but not the other. See the examples below for clarification.

 

大致意思是说:

问号(?)可以用在日期或星期字段,用来指明‘没有特定的值’,当你为这两个字段中的一个设定值的时候就会用到它。下面的例子中说明了这一点。

 

可是,在后面的例子中并没有明确说明这个问号到底起什么作用,于是我编程试验了一下,得出以下结论:

1、如官方文档解释的那样,问号(?)的作用是指明该字段‘没有特定的值’;

2、星号(*)和其它值,比如数字,都是给该字段指明特定的值,只不过用星号(*)代表所有可能值;

3、cronExpression对日期和星期字段的处理规则是它们必须互斥,即只能且必须有一个字段有特定的值,另一个字段必须是‘没有特定的值’;

4、问号(?)就是用来对日期和星期字段做互斥的。

 

基于以上结论就可以解释下列情况:

1、当星期和日期都为*或数字时,报错
Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.

即两个字段不能都指明的特定的值,必须互斥。这里的*和数字是一样的,如果都指明特定的数字,也是报一样的错。

2、当星期和日期都为?时,报错
'?' can only be specfied for Day-of-Month -OR- Day-of-Week.

即两个字段不能都‘没有特定的值’。

 

这个是Spring的实现,没有什么道理,Spring就是规定这两个字段必须这样互斥的设置。

这与UNIX的crontab设置不一样,crontab的规则是日期和星期中只要满足一个就触发,所以不存在互斥的问题。

原文链接:https://blog.csdn.net/chh_jiang/article/details/4603529

标签:星期,cron,互斥,日期,特定,day,表达式,问号
From: https://www.cnblogs.com/jice/p/18130676

相关文章

  • 20个Python 正则表达式应用与技巧
    本文分享自华为云社区《Python正则表达式大揭秘应用与技巧全解析》,作者:柠檬味拥抱。Python中的re模块是用于处理正则表达式的强大工具。正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式。在本文中,我们将探讨Python中re模块的应用和一些技......
  • java中字符串替换的4种方法 replaceAll() 带正则表达式参数 str.replaceAll("[0-9]+
    java中字符串替换的4种方法replaceAll()带正则表达式参数str.replaceAll("[0-9]+","");目录前言一、String的replace()方法二、String的replaceAll()方法三、StringBuffer/StringBuilder的replace()方法四、Matcher的replaceAll()方法总结前言在日常开发中,我们对......
  • 第二节:C#12新语法(主构造函数、集合表达式、默认Lambda参数)
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • 【流水账01】来新公司两星期,自学sap系统
    机缘巧合,匪夷所思地来了cmoc总部黄埔江边,首先学习报销系统。那么很自然地,必须自己学一波会计,搞清楚什么是科目表,账户,科目,借贷,分录的基本概念搞清楚什么是凭证,做账,过账今天开会,财务想实现自动清账,搞得我一脸懵逼回家后b站竟然有个小视频给讲的很清楚,解惑了:【3.SAP未清项实......
  • 常用正则表达式
    1.校验数字的表达式 1.数字:^[0-9]*$ 2.n位的数字:^\d{n}$ 3.至少n位的数字:^\d{n,}$ 4.m-n位的数字:^\d{m,n}$ 5.零和非零开头的数字:^(0|[1-9][0-9]*)$ 6.非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$ 7.带1-2位小数的正数或负数:^(\-)?\d+(......
  • Crontab语法规则格式
    一、crontab的语法规则 crontab的语法规则格式:代表意义   分钟     小时   日期     月份    周     命令数字范围   0~59   0~23   1~31   1~12   0~7   需要执行的命令周的数字为0或7时,都代表“星期天”的意思。......
  • C#:用Lambda表达式来实现接口中的方法
    在C#中,你可以使用Lambda表达式来实现接口中的方法。Lambda表达式是一种简洁的代码构造,它可以在需要委托类型的地方定义匿名函数。假设你有一个接口IMyInterface,它有一个方法voidDoSomething(),你可以这样使用Lambda表达式来实现这个接口:interfaceIMyInterface{voidDo......
  • [Java]Lambda表达式
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18032049出自【进步*于辰的博客】启发博文:《Lambda表达式超详细总结》(转发)。这是我系统学习Lambda表达式时参考的文章。在下文中,我会引用这篇博文中的一些资源,如:图片、阐述......
  • C++11:超进化--lambda表达式
    目录一、lambda表达式的引入二、lambda表达式的语法2.1lambda表达式各部分说明2.2lambda函数的初步使用2.3详谈捕捉列表2.3.1[var][&var] 2.3.2[=]传值捕捉当前域所有对象 2.3.3[&]传引用捕捉所有对象2.3.4[&,val]混合捕捉​编辑 三、lambda底层、lambda与函数对......
  • Web API(六)之正则表达式
    WebAPI(六)之正则表达式正则表达式正则基本使用元字符边界符量词范围字符类替换和修饰符change事件判断是否有类正则表达式正则表达式(RegularExpression)是一种字符串匹配的模式(规则)使用场景:例如验证表单:手机号表单要求用户只能输入11位的......