5

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

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

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

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

4

2 回答 2

5

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

根据Quartz CronTrigger Tutorial

日期字段中的“1/3”表示“从该月的第一天开始每 3 天触发一次”。

因此,1/2这意味着“从每月的第一天开始,每隔一天开火一次”。像这样的 cronExpression0 0 12 1/2 * MON-FRI *应该接近你想要的。检查与

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 是对的,你不能用 cronExpression 来做到这一点

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

于 2012-09-26T10:32:59.170 回答
4

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

于 2011-01-29T03:20:16.257 回答