【问题标题】:How can I create a schedule that fires every nth week using simple schedule?如何使用简单的时间表创建每 n 周触发一次的时间表?
【发布时间】:2015-03-31 09:30:51
【问题描述】:

如何使用quartz.net 简单时间表创建每n 周触发一次的时间表?

【问题讨论】:

  • 到目前为止你尝试了什么?????????

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


【解决方案1】:

这样的事情可以解决问题

  IScheduler sched;
private void ConfigureScheduler()
{
 int nbweeks = 1;
 int n = 24*7*nbweeks;
 var schedFact = new StdSchedulerFactory();
 sched = schedFact.GetScheduler();
 var job = new JobDetailImpl("weeklyjob", null, typeof(Type));
 var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
 var trigger = TriggerBuilder.Create()
                             .StartNow()
                             .WithSimpleSchedule(x=>x.RepeatForever().WithIntervalInHours(n))
                             .Build();

 sched.ScheduleJob(job, trigger);
 sched.Start();
}

只需根据您的需要更改 nbweeks,它将每 n 周运行一次

此解决方案将在每个月的第 14 天(第 2 周)触发一次,您可以随意更改第二周的日期

IScheduler schedd;
private void ConfigureScheduler()
{
    var schedFact = new StdSchedulerFactory();

    schedd = schedFact.GetScheduler();
    var job = new JobDetailImpl("weeklyJob", null, typeof(Type));
    var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
    var cronScheduleBuilder = CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(14, 12, 0);
    var trigger = TriggerBuilder.Create()
                                .StartNow()
                                .WithSchedule(cronScheduleBuilder)
                                .Build();

    sched.ScheduleJob(job, trigger);
    sched.Start();
}

更新 此代码将在每个月的第二个星期一触发

 IScheduler schedd;
private void ConfigureScheduler()
{
    var schedFact = new StdSchedulerFactory();

    schedd = schedFact.GetScheduler();
    var job = new JobDetailImpl("weeklyJob", null, typeof(Type));
    var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
    var cronScheduleBuilder = CronScheduleBuilder.CronSchedule("0 0 12 ? 1/1 MON#2 *");
    var trigger = TriggerBuilder.Create()
                                .StartNow()
                                .WithSchedule(cronScheduleBuilder)
                                .Build();

    sched.ScheduleJob(job, trigger);
    sched.Start();
}  

【讨论】:

  • 这是以小时为单位的间隔。如何每 n 周运行一次?
  • 你有 n=24*7(一天 24 小时,一周 7 天,这肯定不会改变)乘以 n*nthweek 你会得到你想要的,我一直在使用这个以小时、几天和几周为简单的解决方案
  • 这将每 2 周触发一次,对吗?不是每个月的第二周。我需要每个月的第二周的表达式。请帮忙
  • 有没有办法专门在第 2 周的特定日期触发?
  • 查看我对这个主题的最后一次更新,只需使用我提供的信息做你想做的事
猜你喜欢
  • 1970-01-01
  • 2016-04-22
  • 2015-03-02
  • 1970-01-01
  • 2013-05-17
  • 1970-01-01
  • 2021-09-02
  • 1970-01-01
  • 2017-11-17
相关资源
最近更新 更多