下n个小时内每五分钟的Cron表达式是什么?

16

我知道每五分钟是多少:

0 0/5 * * * *

但是我要如何限制发生的时间?

例如:接下来的10小时内,每隔五分钟发生一次。

3个回答

13

1
更新了链接。 - Khurram

6
我认为应该定义一个触发器,可以在某个特定时间之前每小时重复一次:
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

...

Trigger myTrigger = newTrigger()
                    .withIdentity('myUniqueTriggerID")
                    .forJob(myJob)
                    .startAt(startDate)
                    .endAt(endDate)
                    .withSchedule(simpleSchedule().withIntervalInHours(1));

...

scheduler.scheduleJob(myJob, myTrigger);

这是一个有效的答案。问题在于我的代码是使用Quartz API的EJB的客户端。我只能提供startTime和cron表达式。 - Alex Pi
似乎我不能用单个cron表达式做我想做的事情。 - Alex Pi
我不确定我完全理解这个问题。你能否提供更详细的问题说明?同时,也许你可以使用“-”特殊字符来定义时间间隔。请参考http://quartz-scheduler.org/api/2.0.0/org/quartz/CronExpression.html。 - Morfic
我无法控制quartz API。我只是调用一个接收startTime(日期对象)和cron表达式的EJB。是的,最后我使用“-”计算应该设置的范围。仍在考虑特殊情况...比如在计算范围内从一天切换到另一天。 - Alex Pi
在一般情况下(具有访问石英API的情况下),您的答案是正确的。 - Alex Pi

2
如果您可以编程访问运行您的cron表达式的,则可以使用计算出的时间范围调用setStartTime和setEndTime方法。
或者,您可以动态构建cron表达式并指定计算出的小时范围。
例如,如果您在上午9点启动服务器,则可以在运行时创建此表达式0 0/5 9-19 * * *。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接