每隔X天运行一次作业,但仅限于两个特定日期和时间之间

时间:2014-10-27 15:37:28

标签: cron quartz-scheduler

我认为标题说明了一切。

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

更新 是否向我的EndAt()添加了TriggerBuilder

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

1 个答案:

答案 0 :(得分:1)

您正朝着正确的方向前进,需要通过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;