Я пытаюсь вызывать что-то каждые 3 месяца (ежеквартально) в Quartz.NET (используя как стабильную, так и последнюю версию 2, которая является бета-версией с теми же результатами).
Я создаю триггер хрон с 0 30 8 3 */3 ? *
звонить каждые 3 месяца в 8:30 утра третьего месяца, когда это происходит.
Технически, так как сегодня, 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).Также его легче читать на уровне БД.
Пример вызова - Каждые 3 месяца на основе startDate:
var cronMonths = CronUtils.CalculateMonthsWithInterval((startDate.Month - 1), 3);