【问题标题】:Quartz: setting cron expression to run on the 1st and Last day of monthQuartz:将 cron 表达式设置为在每月的第一天和最后一天运行
【发布时间】:2016-06-08 03:22:06
【问题描述】:

Quartz 文档给出了一个在每个月的最后一天运行 cron 作业的示例,如下所示:

0 15 10 升 * ?

每月最后一天上午 10:15 开火

但是,我想在本月的第一天和最后一天运行一个 cron 作业。 我希望 cron 看起来像这样:

0 15 10 1,L * ?

但是这个语法对quartz无效。

我在他们的tutorial 中找不到任何合适/类似的示例。有什么建议吗?

【问题讨论】:

  • 这似乎是 Quartz 中的一个错误,因为文档没有说明使用 L 和逗号来列出日期。您是否尝试过使用L,1 而不是1,L
  • 在文档链接中:quartz-scheduler.org/documentation/quartz-2.x/tutorials/…。他们提到 - “使用 'L' 选项时,重要的是不要指定列表或值范围,因为你会得到令人困惑/意外的结果。”可能您必须在同一个作业上设置两个触发器
  • @AbhishekAsh 文档中的这条评论似乎与问题无关,因为石英显然不支持 L 与其他值。它应该提到这一点,而不是将模棱两可的东西描述为“令人困惑/意外的结果”。

标签: java quartz-scheduler


【解决方案1】:

所以在对石英代码进行了一些挖掘之后,我发现了这个:

// 如果 L 与该月的其他日子一起使用,则抛出异常 if(exprOn == DAY_OF_MONTH && expr.indexOf('L') != -1 && expr.length() > 1 && expr.contains(",")) { throw new ParseException("不支持指定 'L' 和 'LW' 与该月的其他日期", -1); }

org.quartz.CronExpression (quartz 2.2.2)。

似乎“L”不支持当月的某天和该月的其他日子。太糟糕了,他们的文档中没有任何地方:(

【讨论】:

  • 还没实现?
猜你喜欢
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多