Quartz CronTrigger - 获取下一次点火时间
2022-09-01 15:29:53
我正在使用Quartz CronTrigger工具来解析cron计划格式字符串,以确定特定作业何时应该运行。不过,我实际上并没有使用Quartz来安排工作。
CronTrigger中有一个名为getFireTimeAfter(Date)的方法,它给出了在给定日期之后作业的下一次触发时间。当提供的日期是现在或将来时,这很有效。但是,如果日期是过去的,它似乎不起作用。
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);
这是一个cron时间表,在每个月的3点和18日的23:00开火。例如,如果我今天(8月11日)这样做,我会看到:
Reference time: Thu Aug 11 10:04:25 MDT 2011
Next fire after reference time: Thu Aug 18 23:00:00 MDT 2011
但是,如果我将参考日期设置为过去,它会给我相同的下一次火灾时间。
Reference time: Wed Dec 31 17:00:00 MST 1969
Next fire after reference time: Thu Aug 18 23:00:00 MDT 2011
我期望输出是:
Reference time: Wed Dec 31 17:00:00 MST 1969
Next fire after reference time: Wed Aug 3 23:00:00 MDT 2011
该方法只是不打算以这种方式工作,还是我做错了什么?
谢谢!