【发布时间】:2013-01-18 06:25:56
【问题描述】:
我是 Quartz 的新手,我想使用它为使用 SQL Server Express 的客户端提供服务来调度 SQLServer 中的脚本。
我需要用户能够安排任务运行,例如从特定日期开始每隔一周运行一次。例如:StartDate = 1/Jan/2013 12:00PM(星期二),每 14 天重复一次。
在作业的设置中,有一个 StartTime(日期时间)、IntervalUnit(秒、分钟、小时、日、周、年)和 RepeatsEvery(在开始日期之后触发的间隔数)。
例如:StartDate = "1/JAN/2013 12:00PM" 和 IntervalUnit = "DAY" 和 RepeatsEvery= 14 的设置,将在每个第二个星期二下午 12:00 触发作业。如果 StartDate 已经过去,我需要在下一个开始日期触发该作业,例如:如果我今天(2013 年 1 月 18 日)启动了服务,则下一个开始日期将是 29/JAN/2013 12:00PM
我不知道如何使用日历触发器在 Quartz 中完成这项工作。这是 Quartz 内置的东西还是我需要在启动时计算一个新的 StartTime?
假设我必须计算一个新的 StartTime,是否有任何内置函数或简洁的快捷方式,或者我是否需要为每个 IntervalUnit 提供一个类似的函数:
'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)
【问题讨论】:
标签: vb.net quartz.net