Quartz调度程序是否包含日历?我看到有排除的日历,但我没有看到有关包含日历的任何内容。我希望能够从日历中选择日期并在那些日子里运行工作。日期不一定是一种模式。我怎么能在Quartz中做到这一点?
答案 0 :(得分:0)
Quartz Calendar仅定义包含。这是界面:
public interface Calendar {
public boolean isTimeIncluded(long timeStamp);
public long getNextIncludedTime(long timeStamp);
}
某些实现用于定义排除,但其他支持包含。请查看DailyCalendar及其invertTimeRange属性。
由于您提到您希望仅在日历中包含特定日期,因此我怀疑您可能必须实施自己的日历。查看BaseCalendar这应该是一个很好的起点。
如果你很懒,你可以继承HolidayCalendar,只需将isTimeIncluded
改为
@Override
public boolean isTimeIncluded(long timeStamp) {
if (super.isTimeIncluded(timeStamp) == false) {
return false;
}
Date lookFor = getStartOfDayJavaCalendar(timeStamp).getTime();
return dates.contains(lookFor); // <-- HERE we remove the bang (!)
}
定义日历应该非常简单。请注意,它必须是Serializable
!
查看Quartz Tutorial了解详情。