2

有没有办法编写一个在两个日期之间每天运行的 Quartz CronTrigger 表达式,例如从 2011 年 9 月 5 日上午 11 点开始到 2012 年 6 月 10 日上午 11 点结束?

4

3 回答 3

2

使用表示每天上午 11:00 的表达式,例如“0 0 11 * * ?”。

然后将触发器的 startTime 设置为 2011 年 9 月 5 日上午 10:59,并将触发器的 endTime 设置为 2012 年 6 月 10 日上午 11:01。

于 2011-09-05T15:13:37.537 回答
0

单个 cron 表达式不利于为同一时期类型运行不同的计划,无论涉及哪个时期,您的不同计划是年度时期。但是,除了您的年份差异之外,所有其他时期都有相同的时间表。所以...使用这些 cron 表达式:

cron1 = "0 0 23 5/1 SEP-DEC ? 2012"
cron2 = "0 0 23 1/1 JAN-JUN ? 2013"

您可以在 2012 年 12 月 31 日晚上 11:00.00 之后但 2013 年 1 月 1 日晚上 10:59.99 之前的某个时间将调度程序从使用 cron1 切换到 cron2,尽管我不会像这里所示的那样把它剪得这么近。如果您的调度程序正在从数据库或某处的配置中读取它的 cron 表达式,那么只需让它在每天晚上 11:30 读取一个新的时间表。如果您将 cron 表达式存储在数据库中,您可以安排调度程序使用下面的 chron3 为您的特定任务换出 cron 表达式:

cron3 = "0 0 0 1 JAN ? 2013"

愚蠢的我 :o) 今天的日期是2013 年 3 月 13 日,所以我相信这个答案对你来说有点晚了!

于 2013-03-16T01:18:10.683 回答
0

我找到的另一个解决方案是为计划路由指定一个路由策略(SimpleScheduledRoutePolicy),并为此策略对象设置 RouteStartDate 和 setRouteStopDate。

于 2011-09-12T14:54:11.900 回答