当我使用Quartz.NET在新的触发器上调用GetFireTimeAfter()时,我得到的结果很奇怪。对于某些日期,返回的触发时间实际上在我传递给GetFireTimeAfter()的参数之前。有人知道为什么吗?
以下是重现该问题的单元测试:
[Test]
public void Explicit_QuartzGetNextTime_FrequencyPeriod_11Days()
{
ITrigger trigger = TriggerBuilder.Create()
.WithIdentity("Trigger")
.StartAt(new DateTime(2020,1,1,6,0,0))
.WithSimpleSchedule(x => x.WithInterval(TimeSpan.FromDays(11)).RepeatForever())
.Build();
var referenceDate = new DateTime(2020, 3, 29, 6, 1, 0); //6:01 AM
var nextFireTime = trigger.GetFireTimeAfter(referenceDate).Value.DateTime; //ends up being 2020-03-29 at 6:00 AM
Assert.That(nextFireTime >= referenceDate); //fails
}
更新
如果我从4月1日开始,我可以将参考日期增加11天,并可以循环调用任意次数,而不会发生错误。因此看来03-29和03-18日期只是有问题的,不确定为什么。