每月,每周和每日的Quartz.Net Cron表达式

时间:2012-04-14 12:30:05

标签: c# quartz-scheduler quartz.net crontrigger cronexpression

我是quartz.net和cron表达式的新手,我必须在c#dotnet应用程序中创建一个quartz.net调度程序,它应该根据从数据库获取的值在每月,每周和每日执行。< / p>

具有计划详细信息的表。

Id EffectiveDate  StartTime  Frequency  
 1  2012-04-22      20:55      Daily       
 2  2012-04-22      10:12      Weekly     
 3  2012-04-22      17:00      Daily   
 4  2012-04-23      02:15      Monthly   
 5  2012-04-26      18:30      Daily        
 6  2012-04-27      11:45      Weekly

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:3)

@ user1301587,希望你找到了前进的方法,但我注意到你的问题在Google上仍然显示得很高,所以我会继续添加一些伪代码来说明我将如何做到这一点:

  1. 从数据源中获取计划(看起来像RDBMS 在您的情况下数据库表)
  2. 遍历时间表列表 并使用日程表构建CronScheduleBuilder实例:

    string cronExpression = string.Format(“{0} {1} {2} {3} {4} {5}”,                            第二部分,                            minutePart,                            hourPart,                            dayOfMonthPart,                            monthPart,                            dayOfWeekPart                            );

    IScheduleBuilder scheduleBuilder = CronScheduleBuilder
                    .CronSchedule(cronExpression)
                    .InTimeZone(TimeZoneInfo.Utc);
    
  3. E.g。 cron表达 0 26 6 * *?在每周的每天上午6:26运行你的工作 我发现的一个问题是,如果你没有指定时区,Quartz将根据你当前的时区应用转换将指定的时间带入UTC时间

    现在,您可以使用上面构建的计划构建触发器:

    ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
                    .WithIdentity("TestTrigger")
                    .WithSchedule(scheduleBuilder)
                    .Build();
    

    使用THIS站点构建Quart.Net样式表达式