是否有任何API可以提供cron表达式的下n次运行。
答案 0 :(得分:1)
使用触发器(org.quartz.Trigger
)调度石英作业。触发器接口公开了两个有用的方法:
Date getNextFireTime();
Date getFireTimeAfter(Date afterTime);
因此,请扣动扳机,致电getNextFireTime()
。现在您知道接下来什么时候触发。然后呼叫getFireTimeAfter( next )
并在下一次触发时间传递它。重复此操作,直到您有足够的运行时间来满足用例为止。
因此,对于五次运行,应该可以执行以下操作:
List<Date> getNextFiveRuns(Trigger trigger) {
List<Date> runs = new ArrayList<>();
Date next = trigger.getNextFireTime();
// check for null, which indicates a non-repeating trigger or one with an end-time
while(next != null && runs.size() < 5) {
runs.add(next);
next = trigger.getFireTimeAfter(next);
}
return runs;
}
Quartz 2.3.0 JavaDoc:org.quartz.Trigger
答案 1 :(得分:0)
您可以这样计算下一次运行时间:
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.scheduling.support.SimpleTriggerContext;
public static void main(String[] args) {
CronTrigger trigger = new CronTrigger("0 0 10 * * ?");
SimpleTriggerContext triggerContext = new SimpleTriggerContext();
Date testDate = new Date();
int i = 0;
while (i++ < 5) {
triggerContext.update(null, null, testDate);
testDate = trigger.nextExecutionTime(triggerContext);
System.out.println(testDate);
}
}
输出为:
Wed Jun 05 10:00:00 CEST 2019
Thu Jun 06 10:00:00 CEST 2019
Fri Jun 07 10:00:00 CEST 2019
Sat Jun 08 10:00:00 CEST 2019
Sun Jun 09 10:00:00 CEST 2019
答案 2 :(得分:-1)
如果您只是想了解一下,可以使用http://www.cronmaker.com/计算接下来的几个预定运行时间
好像cronmaker也有一个API(我看到您提到您正在寻找API):
curl http://www.cronmaker.com/rest/sampler?expression={expression}
示例:
curl http://www.cronmaker.com/rest/sampler?expression=0 0/2 * 1/1 * ? *&hour=13&minute=45
来源: