惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
T
The Blog of Author Tim Ferriss
G
Google Developers Blog
博客园_首页
博客园 - 【当耐特】
量子位
S
SegmentFault 最新的问题
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
T
Tailwind CSS Blog
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
Y
Y Combinator Blog
博客园 - 聂微东
The Cloudflare Blog
小众软件
小众软件
J
Java Code Geeks
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
H
Help Net Security
Jina AI
Jina AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
宝玉的分享
宝玉的分享

博客园 - zbjice

mybatis-plus saveBatch方法java.lang.NullPointerException MacOS打开应用后反复提示“XXX将对你的电脑造成伤害。你应该将它移到废纸篓”的解决办法 charles代理证书更新 oracle设置与数据源的 JDBC 连接 JDK升级问题记录 加载spring的xsd文件失败,导致发布失败 图片压缩优化 APP中https证书有效性验证引发安全问题(例Fiddler可抓https包) Fullgc引发redis超时异常 maven父子模块deploy 问题 lua post参数获取,参数截断 PhpStorm, XDebug, and DBGp Proxy Dia Diagram Mac OSX Yosemite Fix 闪退 xterm sql优化-隐形转换危害 mybatis 关联映射传递多参数方法 分页栏页码输入框校验 oracle中查询或插入特殊字符 使用a标签或form的submit做下载按钮,然后通过js调用其click事件去下载时经常出现的异常 eclipse、tomcat搭建时出现异常
cron表达式里日期和星期关系
zbjice · 2024-04-12 · via 博客园 - zbjice

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

https://www.cnblogs.com/zpcdbky/p/15357819.html