Quartz scheduler 是否有包含日历

Does Quartz scheduler have inclusion calendars

Quartz 调度器有包含日历吗?我看到有排除日历,但我没有看到任何关于包含日历的信息。我希望能够从日历中 select 天和那些日子的 运行 工作。日期不一定有规律。我如何在 Quartz 中执行此操作?

石英日历仅定义夹杂物。这是界面:

public interface Calendar {

  public boolean isTimeIncluded(long timeStamp);

  public long getNextIncludedTime(long timeStamp);

}

一些实现用于定义排除项,但其他实现支持包含项。看看 DailyCalendar and its 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 了解更多信息。