如何在每个月的第一个星期六和第一个星期日执行cron quartz

时间:2014-03-07 09:07:16

标签: date cron quartz-scheduler

我尝试过:

0 0 2 ? 1/1 SAT#1,SUN#1 *

但结果是错误的(仅在周日出现):

  1. 2014年4月6日星期日凌晨2:00
  2. 2014年5月4日星期日凌晨2:00
  3. 2014年6月1日星期日凌晨2:00
  4. 2014年7月6日星期日凌晨2:00
  5. 2014年8月3日星期日凌晨2:00
  6. 我也尝试过:

    0 0 2 1-7 * ? SAT,SUN以及许多变体,但所有这些变体都是无效的语法。

    正确的输出应该是:

    1. 2014年4月5日(星期六)凌晨2:00
    2. 2014年4月6日星期日凌晨2:00
    3. 2014年5月3日(星期六)凌晨2:00
    4. 2014年5月4日星期日凌晨2:00
    5. 2014年6月1日星期日凌晨2:00
    6. 2014年6月7日星期六凌晨2:00 。 。 。
    7. 自从http://www.cronmaker.com/(好页面!)以来,我一直在进行所有测试。 此致

4 个答案:

答案 0 :(得分:0)

我也尝试过失败了。在我看来,Quartz Cron有一些局限性。

顺便说一下,你不能把你的cron分成两个不同的时间表吗?例如:

0 0 2 ? 1/1 SAT#1 *
0 0 2 ? 1/1 SUN#1 *

答案 1 :(得分:0)

07代表星期日。

因此,16的数字固定为Monday,...,Saturday

图形:

 +---------------- minute (0 - 59)
 |  +------------- hour (0 - 23)
 |  |  +---------- day of month (1 - 31)
 |  |  |  +------- month (1 - 12)
 |  |  |  |  +---- day of week (0 - 6) (Sunday=0 or 7)
 |  |  |  |  |
 *  *  *  *  *  command to be executed

0 0 1-7 * 0,6 * 应该适合你。

Cron

答案 2 :(得分:0)

您必须将其拆分为2个cron表达式。从文档(http://www.quartz-scheduler.org/api/2.2.0/org/quartz/CronExpression.html):

  

如果使用'#'字符,则星期几字段中只能有一个表达式(“3#1,6#3”无效,因为有两个表达式)。

答案 3 :(得分:0)

Cron Quartz绝对不允许在一个声明中这样做。我收到错误消息:"未指定支持指定星期和日期参数。"