首页 > 解决方案 > Quartz Cron 表达式问题@每月作业失败

问题描述

我有一个用例,我想从 1 月开始的每个月的第一个星期五下午 2:30 开始执行每月工作。

我使用的 Cron 表达式:-

0 30 14 ? 1/1 6#1

这绝对没问题。

点火时间示例:-

Fri Jan 03 14:30:00 UTC 2020
Fri Feb 07 14:30:00 UTC 2020
Fri Mar 06 14:30:00 UTC 2020
Fri Apr 03 14:30:00 UTC 2020
Fri May 01 14:30:00 UTC 2020
Fri Jun 05 14:30:00 UTC 2020
Fri Jul 03 14:30:00 UTC 2020

但是如果我使用相同的表达式并使用十二月作为开始月份

0 30 14 ? 12/1 6#1 

这开始失败:-

Fri Dec 04 14:30:00 UTC 2020
Fri Dec 03 14:30:00 UTC 2021
Fri Dec 02 14:30:00 UTC 2022
Fri Dec 01 14:30:00 UTC 2023

这种变成每年一次。

我没有看到我正在使用的表达式有任何问题。我们如何解决这个问题或解决方法?

标签: cronquartz-scheduler

解决方案


IMO 这意味着每 12 个月 = 每年 12 月,它与

0 30 14 ? 12 6#1 

你的第一条记录等于

0 30 14 ? * 6#1

(星号平均每月)


推荐阅读