我正在使用石英调度程序使用 cron 表达式在 Java 中安排一些作业,并且遇到了需要查找给定时间戳是否在指定的 cron 表达式内的需求。也就是说,这个 cron 的计划作业会在给定的时间戳上运行吗?
我并不局限于使用石英库来解决这个问题,所以欢迎任何解决方案。
我正在使用石英调度程序使用 cron 表达式在 Java 中安排一些作业,并且遇到了需要查找给定时间戳是否在指定的 cron 表达式内的需求。也就是说,这个 cron 的计划作业会在给定的时间戳上运行吗?
我并不局限于使用石英库来解决这个问题,所以欢迎任何解决方案。
有
日期 getFireTimeAfter(Date afterTime)
在触发界面。
当 t 是您要检查的时间时,您可以检查下一个触发时间 t-1 是什么。如果结果等于 t,你就知道答案了。
Calendar接口具有您需要检查时间戳是否“包含”在日历中的方法,因此 CronTrigger 将使用给定的时间戳触发:
boolean includedisTimeIncluded(long timeStamp)
您可以使用 Inherited Trigger 方法从 CronTrigger获取日历名称:
String calendarName = myTrigger.getCalendarName();
然后从 Scheduler 实例中检索日历并检查您的时间戳:
Calendar cal = sched.getCalendar(calendarName);
boolean willFire = cal.includedisTimeIncluded(timeStampToCheck);