java - Quartz 调度程序有包含日历吗

标签 java quartz-scheduler

Quartz 调度程序有包含日历吗?我看到有排除日历,但我没有看到任何有关包含日历的信息。我希望能够从日历中选择日期并在这些日期运行作业。日期不一定有一定的模式。我怎样才能在 Quartz 中做到这一点?

最佳答案

Quartz Calendar 仅定义包含内容。这是界面:

public interface Calendar {

  public boolean isTimeIncluded(long timeStamp);

  public long getNextIncludedTime(long timeStamp);

}

一些实现用于定义排除项,但其他支持包含项。看看DailyCalendar及其 invertTimeRange属性。

既然您提到您只想在日历中包含特定日期,我怀疑您可能必须实现自己的日历。查看BaseCalendar这应该是一个很好的起点。

如果你很懒,你也许可以继承HolidayCalendar只需将 isTimeInincluded 更改为

@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 (!)
}

定义日历应该非常简单。请记住,它必须是可序列化!

查看 Quartz Tutorial了解更多信息。

关于java - Quartz 调度程序有包含日历吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37262744/

相关文章:

java - 存储实时 TestNG 数据

java - Keycloak-Tomcat-适配器 : Is there a alternative path for 'keycloak.json' ?

java - 用java写控制台输出

exception - quartz 的 slf4j 异常

quartz-scheduler - 分布式定时器服务

grails - Grails中的Quartz Scheduler

java - 具有最大组合值的链接 JSlider

java - qtjambi - QApplication.initialize 在主方法之外

java - 一种根据给定时间表运行任务的方法

java - 如何从 quartz 表中删除未使用的触发器