我想要在第一天的每个月执行一个石英吗?

时间:2015-12-02 17:49:46

标签: task quartz-scheduler scheduler quartz.net crontrigger

ITrigger trigger = TriggerBuilder.Create()
                       .StartAt(DateTime.Today.AddMinutes(1))
                          .WithIdentity("trigger1", "group1")
                           .StartNow()
                          .WithSimpleSchedule(x => x
                              .WithIntervalInSeconds(10)
                          .WithRepeatCount(0)
                            )
                      .Build();

我想要在第一天的每个月执行触发器

2 个答案:

答案 0 :(得分:3)

你有两个选择。您可以使用cron表达式并使用此cron表达式在触发器中使用WithCronSchedule

  

0 0 12 1 1/1? *

这是代码:

ITrigger trigger = TriggerBuilder
    .Create()
    .StartNow()
    .WithIdentity("trigger1", "myGroup")
    .WithCronSchedule("0 0 12 1 1/1 ? *")
    .Build();

请注意,此触发器将在中午开始。

您可以使用此有用的tool检查cron表达式并对其进行自定义。

选项2是使用CronScheduleBuilder.MonthlyOnDayAndHourAndMinute的计划:

ITrigger trigger = TriggerBuilder
    .Create()
    .StartNow()
    .WithIdentity("trigger1", "myGroup")
    .WithSchedule(CronScheduleBuilder.MonthlyOnDayAndHourAndMinute(1, 12, 0))
    .Build();

备注:

Quartz.Net中的Cron表达式由7 sub-expressions

组成
1. Seconds
2. Minutes
3. Hours
4. Day-of-Month
5. Month
6. Day-of-Week
7. Year (optional field)

答案 1 :(得分:0)

我正在寻找一种在本月的第一个工作日在 java 石英 CronTrigger 中执行的方法,并最终出现在此页面上。不确定这是否适用于 Quartz.Net,但 javaquartz 支持每月第一个工作日的符号 0 7 1 1W * ?。我把它写在这里是为了将来的我。

0 7 1 1W * ?

  • 0
  • 分钟 7
  • 小时 1
  • 最接近一个月第一天的第 1W 个工作日
  • * 个月
  • 星期几 ? 无具体值

另见 javadoc of org.quartz.CronExpression