Cron 每X天运行一次作业,但只能在两个特定日期和时间之间运行

Cron 每X天运行一次作业,但只能在两个特定日期和时间之间运行,cron,quartz-scheduler,Cron,Quartz Scheduler,我想标题说明了一切 我想运行一个作业,例如从2014年6月19日开始(比如上午7点),到2015年12月25日结束(比如晚上11点),在这两个日期之间每隔9天运行一次。我可以设置它在没有结束日期的情况下工作。但我不知道如何在一个表达式中包含所有内容 更新: 将EndAt()添加到我的TriggerBuilder工作吗 mytrigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity(triggerName, triggerGr

我想标题说明了一切

我想运行一个作业,例如从2014年6月19日开始(比如上午7点),到2015年12月25日结束(比如晚上11点),在这两个日期之间每隔9天运行一次。我可以设置它在没有结束日期的情况下工作。但我不知道如何在一个表达式中包含所有内容

更新:
EndAt()
添加到我的
TriggerBuilder
工作吗

mytrigger = (ICronTrigger)TriggerBuilder.Create()
    .WithIdentity(triggerName, triggerGroup)
    .WithCronSchedule(cron)
    .EndAt(xxxx)
    .Build();

您的方向是正确的,需要大量研究才能使用cron表达式生成的计划可以通过API轻松生成。例如,您需要的触发器如下所示:

    var startDate = new DateTime(2014, 06, 19, 7, 0, 0);
    var endDate = new DateTime(2015, 12, 25, 23, 0, 0);
    var cronExpression = "0 0 12 1/9 * ? *"; //every nine days

    ITrigger trig = TriggerBuilder.Create()
        .StartAt(startDate)
        .WithCronSchedule(cronExpression)
        .WithDescription("description")
        .WithIdentity(triggerKey)
        .WithPriority(1)
        .EndAt(endDate)
        .Build();
如果要查看生成的cron表达式:

    ICronTrigger trigger = (ICronTrigger)trig;
    string cronExpression = trigger.CronExpressionString;

给我们看看你现在的状态config@Martin我想在cron中提到开始日期和时间,然后当我使用
TriggerBuilder
添加触发器时,我还添加了
endAt()
。这是个好主意吗?我不完全确定“在我的cron中提及开始日期和时间”是什么意思,但是设置endAt将确保触发器不会在endAt之后触发date@Martin我的意思是,我可以编写cron,使它在特定的日期和时间开始。但是为了添加结束日期,我可以使用
TriggerBuilder
创建一个my触发器,并将“endDate”添加到它的构建中。我将更新上面的代码。