首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Quartz CronTrigger -获取下一次发火时间

Quartz CronTrigger -获取下一次发火时间
EN

Stack Overflow用户
提问于 2011-08-12 00:08:03
回答 5查看 53.5K关注 0票数 25

我使用Quartz CronTrigger工具来解析cron调度格式字符串,以确定何时应该运行特定的作业。不过,我实际上并没有使用Quartz来调度作业。

在CronTrigger中有一个名为getFireTimeAfter( date )的方法,它提供在给定日期之后下一次触发作业的时间。当提供的日期是现在或将来时,这很有效。但如果日期是过去的,它似乎就不起作用了。

代码语言:javascript
复制
Date currTime = new Date();
CronTrigger tr = new CronTrigger();
tr.setCronExpression("0 0 23 3,18 * ? *");
Date nextFireAt = tr.getFireTimeAfter(currTime);
System.out.println("Reference time: " + currTime);
System.out.println("Next fire after reference time: " + nextFireAt);

每个月的3号和18号23:00发射。例如,如果我今天(8月11日)这样做,我会看到:

代码语言:javascript
复制
Reference time: Thu Aug 11 10:04:25 MDT 2011
Next fire after reference time: Thu Aug 18 23:00:00 MDT 2011

但如果我将参考日期设置为过去,它会给出相同的下一次触发时间。

代码语言:javascript
复制
Reference time: Wed Dec 31 17:00:00 MST 1969
Next fire after reference time: Thu Aug 18 23:00:00 MDT 2011

我原以为输出结果是:

代码语言:javascript
复制
Reference time: Wed Dec 31 17:00:00 MST 1969
Next fire after reference time: Wed Aug 3 23:00:00 MDT 2011

这个方法是不是不打算这样工作,还是我做错了什么?

谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-12 02:18:57

您真正想要直接使用的是CronExpression对象,而不是CronTrigger。正如您所发现的,它不会计算过去的下一次运行时间...但是CronExpression会的!

CronExpression的方法是: getNextValidTimeAfter。这就是你想要的。

票数 42
EN

Stack Overflow用户

发布于 2015-12-03 20:37:55

在Spring中,您可以遵循他们在集成测试中使用的相同方法。CronTriggerTests

代码语言:javascript
复制
CronTrigger trigger = new CronTrigger();
trigger.setCronExpression("0 0 23 3,18 * ? *");
SimpleTriggerContext triggerContext = new SimpleTriggerContext();
triggerContext.update(null, null, new Date());
Date nextFireAt = trigger.nextExecutionTime(triggerContext);
票数 5
EN

Stack Overflow用户

发布于 2012-01-30 20:20:31

CronTrigger.getFireTimeAfter()方法具有一种保护机制,用于防止指定的事件发生在过去。

这可以通过使用您正在计算的过去时间调用setStartTime firth来规避。那么对getFireTimeAfter的调用应该返回一个有效的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7029196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档