Spring判断当天最后一次定时任务

0

要判断当天最后一次定时任务思路:获取下次执行时间,判断日期是不是今天。

@Autowired
private ApplicationContext context;
...
// 获取正确的定时任务时间表达式
Map<String, CronTask> tasks = context.getBeansOfType(CronTask.class);
String expression = null; // 时间表达式
Set<String> keys = tasks.keySet();
for (String key : keys) {
    CronTask task = tasks.get(key);
    ScheduledMethodRunnable runnable = (ScheduledMethodRunnable) task.getRunnable();
    if("方法名".equals(runnable.getMethod().getName())) {
        expression = task.getExpression();
        break;
    }
}
// 获取下次执行时间
CronTrigger cronTrigger = new CronTrigger(expression);
Date next = cronTrigger.nextExecutionTime(new SimpleTriggerContext());
// 比较日期省略

另外注意joda这个比较日期的时候是除以24小时的,并不是比较的日期(其实没什么关系)。