Quartz调度程序是否包含日历

时间:2016-05-16 20:30:19

标签: java quartz-scheduler

Quartz调度程序是否包含日历?我看到有排除的日历,但我没有看到有关包含日历的任何内容。我希望能够从日历中选择日期并在那些日子里运行工作。日期不一定是一种模式。我怎么能在Quartz中做到这一点?

1 个答案:

答案 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了解详情。