4

我正在使用石英调度程序使用 cron 表达式在 Java 中安排一些作业,并且遇到了需要查找给定时间戳是否在指定的 cron 表达式内的需求。也就是说,这个 cron 的计划作业会在给定的时间戳上运行吗?

我并不局限于使用石英库来解决这个问题,所以欢迎任何解决方案。

4

2 回答 2

1

日期 getFireTimeAfter(Date afterTime)

在触发界面。

当 t 是您要检查的时间时,您可以检查下一个触发时间 t-1 是什么。如果结果等于 t,你就知道答案了。

于 2013-09-15T12:06:10.607 回答
0

Calendar接口具有您需要检查时间戳是否“包含”在日历中的方法,因此 CronTrigger 将使用给定的时间戳触发:

boolean includedisTimeIncluded(long timeStamp)
  • 您可以使用 Inherited Trigger 方法从 CronTrigger获取日历名称:

    String calendarName = myTrigger.getCalendarName();
    
  • 然后从 Scheduler 实例中检索日历并检查您的时间戳:

    Calendar cal = sched.getCalendar(calendarName);
    boolean willFire = cal.includedisTimeIncluded(timeStampToCheck);
    
于 2013-09-20T09:57:05.427 回答