Vb.net 根据Quartz中的开始时间按时间间隔安排任务
我是Quartz的新手,希望使用它为使用SQLServerExpress的客户端使用服务来调度SQLServer中的脚本 我需要一个用户能够安排一个任务运行,比如说从一个特定的日期开始每两周运行一次。例如:开始日期=2013年1月1日下午12:00(星期二),每14天重复一次 在作业的设置中,有StartTime(日期时间)、IntervalUnit(秒、分钟、小时、天、周、年)和RepeatsEvery(在开始日期之后触发的间隔数) 例如:StartDate=“1/JAN/2013 12:00PM”和IntervalUnit=“DAY”以及RepeatsEvery=14的设置将在每2个星期二下午12:00PM解雇该作业。如果开始日期已过,我需要在下一个开始日期启动作业,例如:如果我今天(2013年1月18日)开始服务,下一个开始日期将是2013年1月29日下午12:00 我不知道如何在石英中使用日历触发器来实现这一点。这是石英内置的还是我需要在启动时计算新的启动时间 假设我必须计算一个新的开始时间,是否有任何内置函数或简洁的快捷方式,或者我是否需要为每个IntervalUnit使用类似的函数:Vb.net 根据Quartz中的开始时间按时间间隔安排任务,vb.net,quartz.net,Vb.net,Quartz.net,我是Quartz的新手,希望使用它为使用SQLServerExpress的客户端使用服务来调度SQLServer中的脚本 我需要一个用户能够安排一个任务运行,比如说从一个特定的日期开始每两周运行一次。例如:开始日期=2013年1月1日下午12:00(星期二),每14天重复一次 在作业的设置中,有StartTime(日期时间)、IntervalUnit(秒、分钟、小时、天、周、年)和RepeatsEvery(在开始日期之后触发的间隔数) 例如:StartDate=“1/JAN/2013 12:00
'Days
Dim diff As Integer
diff = Now.Subtract(.StartTime).TotalDays
Dim offset As Integer
offset = .RepeatsEvery - (diff Mod .RepeatsEvery)
offset = Now.AddDays(offset).Subtract(.StartTime).TotalDays 'Get the days from Start t preserve time of day
Start = .StartTime.AddDays(offset)
您可以创建一个触发器,然后调用trigger.GetFireTimeAfter(DateTime.Now)来计算新的开始日期,然后使用新的StartDate生成和新触发器 下面是C#,希望能给你一个想法
var trigger = TriggerBuilder.Create()
.StartAt( new DateTimeOffset(new DateTime(2013,1,1)))
.WithSimpleSchedule(x=>x.RepeatForever()
.WithInterval(new TimeSpan(14,0,0,0)))
.Build();
var newStartingPoint = trigger.GetFireTimeAfter(DateTime.Now);
if (newStartingPoint.HasValue)
{
trigger = ((ISimpleTrigger) trigger).GetTriggerBuilder()
.StartAt(newStartingPoint.Value)
.Build();
}
.GetTriggerBuilder()在ITrigger上不可用,这就是为什么必须将触发器强制转换为ISimpleTrigger,但相同的原则适用于其他触发器