【发布时间】:2011-11-08 20:50:11
【问题描述】:
我试图在 Quartz.NET 中每 3 个月(每季度)调用一次(使用稳定版和最新版 2,它是测试版,结果相同)。
我使用 0 30 8 3 */3 ? * 创建 cron 触发器,每 3 个月在它发生的第三个月的上午 8.30 调用一次。
所以从技术上讲,自今天 9 月 2 日以来,我预计它会在明天触发。然而,它的下一个运行时间显示为下个月。为什么会这样?
更新:根据我得到的答案,我创建了以下方法 - 可能对某人有用:
public static string CalculateMonthsWithInterval(int startMonth, int interval)
{
var months = new List<string>();
var monthNames = new [] {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"};
var monthSelector = startMonth % interval;
for (var i = 0; i < 12; i++)
{
if (i % interval == monthSelector)
{
months.Add(monthNames[i]);
}
}
return string.Join(",", months.ToArray());
}
Ps:我有几个月没有使用索引,因为由于某种原因它不能很好地与我的 Quartz (v2 BETA) 配合使用。在数据库级别也更容易阅读。
示例调用 - 基于 startDate 每 3 个月:
var cronMonths = CronUtils.CalculateMonthsWithInterval((startDate.Month - 1), 3);
【问题讨论】:
标签: c# scheduling quartz.net