Tôi đang cố gắng gọi thứ gì đó cứ 3 tháng một lần (hàng quý) trong Quartz.NET (sử dụng cả phiên bản ổn định và mới nhất 2 là bản beta có cùng kết quả).Quartz.Net - Cứ 3 tháng
Tôi tạo trình kích hoạt cron với 0 30 8 3 */3 ? *
được gọi 3 tháng một lần vào lúc 8.30 sáng vào ngày thứ ba của tháng xảy ra.
Vì vậy, về mặt kỹ thuật kể từ ngày 2 tháng 9 hôm nay, tôi hy vọng nó sẽ kích hoạt vào ngày mai. Tuy nhiên, thời gian chạy tiếp theo cho thấy là tháng tới. Tại sao vậy?
Cập nhật: Theo câu trả lời tôi nhận được tôi tạo ra phương pháp sau đây - có thể có ích cho ai đó:
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: Tôi không sử dụng chỉ số hàng tháng trời vì một số lý do nó không hoạt động tốt với thạch anh của tôi (v2 BETA). Ngoài ra nó dễ dàng hơn để đọc ở cấp DB.
Ví dụ cuộc gọi - Định kỳ 3 tháng dựa trên NgàyBắtđầu:
var cronMonths = CronUtils.CalculateMonthsWithInterval((startDate.Month - 1), 3);
làm thế nào bạn sẽ làm cho nó kích hoạt mỗi 3 tháng sau đó? – Luke
Vâng, như tôi đã nói trong câu trả lời của tôi: 0 30 8 3 MAR, JUN, SEP, DEC? * –
Điều này sẽ diễn ra 3 tháng một lần, bắt đầu từ 2011-09-03 08:30:00 –