【问题标题】:Is this cronExpression correct?这个 cronExpression 正确吗?
【发布时间】:2011-05-26 06:04:15
【问题描述】:

不知道下面的表述是否正确:

<property name="cronExpression" value="0  0  12  2  *  MON-FRI ?"/> 

我尝试将触发器配置为每个月的第二天触发一次,无论年份如何,在中午,并且星期几必须在星期一和星期五之间。

如果有人可以帮助我,我将不胜感激。提前致谢。

【问题讨论】:

  • 您的意思是“每隔一天”还是“每个月的第二天”(您的 cronExpression 建议)?

标签: quartz-scheduler cronexpression


【解决方案1】:

您不能同时指定一个月中的某一天和一周中的某一天 - 不支持。

【讨论】:

    【解决方案2】:

    我假设您的意思是“每隔一天(每隔一天),只要是周一至周五”。

    根据Quartz CronTrigger Tutorial

    '1/3' 在 day-of-month 字段中的意思是“每 3 天触发一次,从 每月的第一天”。

    所以,1/2 的意思是“从每月的第一天开始,每隔一天触发一次”。然后像 0 0 12 1/2 * MON-FRI * 这样的 cronExpression 应该接近你想要的。检查与

    org.quartz.CronExpression.isValidExpression("0  0  12  1/2 * MON-FRI *")
    

    ...表示表达式有效。

    然而,进一步测试它:

    CronExpression e = new CronExpression("0  0  12  1/2 * MON-FRI *");
    e.isSatisfiedBy(new DateTime(2012, 9, 26, 12, 0, 0, 0).toDate());
    

    ...抛出异常:

    > Exception in thread "main" java.lang.UnsupportedOperationException:
    > Support for specifying both a day-of-week AND a day-of-month parameter
    > is not implemented.
    

    所以,看起来像 jhouse is right,而您不能使用 cronExpression 来做到这一点

    也许这样的事情可以作为一种解决方法:Quartz cron expression for cron triggers executed every Nth Hour/Day/Week/Month

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2013-03-06
      • 2011-10-21
      • 2011-03-02
      • 2017-06-25
      相关资源
      最近更新 更多