Cron Expression不在特定日期运行

时间:2013-12-16 10:53:03

标签: cron quartz.net

我有一个使用Quartz.NET运行的cron作业。

    <cron-expression>0 5 * * * ?</cron-expression>

如上所示,它每5分钟运行一次,但我希望它不会从2013年12月30日下午5点到2014年1月1日上午7点运行..

这可能有人知道吗? 谢谢 尼尔

1 个答案:

答案 0 :(得分:1)

使用日历最容易进行排除。使用日历,您可以排除一组天,工作日,时间或计划中的cron表达式。确定火灾时间后,始终检查日历(可以运行吗?)。

你可以链接多个日历,因为你有一个令人讨厌的复杂性,传递年份,多天和时间范围。更具可读性和可理解性的解决方案可能是实现您自己的固定时间范围日历(实现ICalendar),该日历采用结束和开始时间并排除它们。

您自然也可以在2013-12-30 17:00结束第一次cron触发,并添加一个新的触发器,从2014-01-01 07:00开始。

这是一个利用CronCalendar的简单示例:

var calendar = new CronCalendar("0 * 1 * * ?");
scheduler.AddCalendar("myCalendar", calendar, replace: false, updateTriggers: false);

var trigger = TriggerBuilder.Create()
    .WithCronSchedule("0 5 * * * ?")
    .ModifiedByCalendar("myCalendar")
    .Build();

scheduler.ScheduleJob(trigger);