我正在使用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
这个方法是不是本来就不能那样工作,还是我做错了什么?
谢谢!