【问题标题】:Quartz.Net Cron Expression for Monthly,Weekly and DailyQuartz.Net Cron 表达式为每月、每周和每日
【发布时间】:2012-04-26 13:45:06
【问题描述】:

我对quartz.net 和cron 表达式非常陌生,我必须在c# dotnet 应用程序中创建一个quartz.net 调度程序,它应该根据从数据库中获取的值在每月、每周和每天执行一次。

具有调度详细信息的表。

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

请帮我解决这个问题。

【问题讨论】:

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


    【解决方案1】:

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

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

      字符串 cronExpression = string.Format("{0} {1} {2} {3} {4} {5}", 第二部分, 分钟部分, 小时部分, dayOfMonthPart, 月部分, dayOfWeekPart );

      IScheduleBuilder scheduleBuilder = CronScheduleBuilder
                      .CronSchedule(cronExpression)
                      .InTimeZone(TimeZoneInfo.Utc);
      

    例如cron 表达式 0 26 6 * * ? 每周每天早上 6:26 运行您的工作 我发现的一个问题是,如果您不指定时区,Quartz 将根据您当前的时区应用转换以将指定时间转换为 UTC 时间

    现在您可以使用上面构建的时间表构建触发器:

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

    使用THIS 站点构建 Quart.Net 风格的表达式

    【讨论】:

      猜你喜欢
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 2011-05-30
      相关资源
      最近更新 更多