Java Quartz框架下每小时执行的Cron表达式0 0 0/1 * *是否有效?
Quartz Cron表达式
0 0 0/1 * * 有效性及每小时执行需求解析 嘿,刚好对Quartz的Cron表达式熟得很,来给你捋清楚这个问题!
首先得给你提个醒:Quartz的Cron表达式和常见的Unix Cron字段顺序不一样——Quartz多了一个秒字段,标准顺序是:
- 秒(0-59)
- 分(0-59)
- 时(0-23)
- 日(1-31)
- 月(1-12 或 JAN-DEC)
- 星期(1-7 或 SUN-SAT,注意:Quartz中1代表周日,7代表周六)
- 年(可选字段,留空则表示每年)
你写的0 0 0/1 * *只有5个字段,Quartz会默认把它解析成「分 时 日 月 星期」,这里第三个字段是日,而0/1在日字段里是完全无效的(日的合法范围是1-31),所以这个表达式根本跑不起来,会直接抛出配置错误。
那要实现每小时执行(每个小时的0分0秒准时触发),正确的Quartz Cron表达式应该是下面两种之一:
0 0 * * * ?:秒设为0,分设为0,时设为*(表示每小时),日、月用*,星期用?(Quartz要求日和星期字段不能同时指定具体匹配规则,用?表示忽略星期维度的过滤)0 0 0/1 * * ?:和上面效果完全一致,0/1在小时字段表示从0点开始,每1小时执行一次,和*是等价的
最后补个小细节:如果你的任务不需要按星期过滤,一定要在星期字段用?而不是*,不然可能会出现重复触发或者触发逻辑不符合预期的情况哦!
内容的提问来源于stack exchange,提问作者Tanvi Jaywant
相关产品推荐
相关产品推荐

