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

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

4

2 回答 2

4

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

0 0 12 1 1/1 ? *

这是代码:

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

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

您可以使用这个有用的工具检查 cron 表达式并对其进行自定义。

选项 2 是使用的时间表CronScheduleBuilder.MonthlyOnDayAndHourAndMinute

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

笔记:

Quartz.Net 中的 Cron 表达式由 7个子表达式组成:

1. Seconds
2. Minutes
3. Hours
4. Day-of-Month
5. Month
6. Day-of-Week
7. Year (optional field)
于 2015-12-04T09:41:40.613 回答
0

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

0 7 1 1W * ?

  • 0
  • 分钟7
  • 小时1
  • 1W最接近每月第一天的星期几
  • *
  • 星期几?没有具体值

另请参阅org.quartz.CronExpression 的 javadoc

于 2021-05-27T13:46:56.857 回答