Переход на период iCal.net - только дата совпадений
Я пытаюсь смоделировать MatchesDateOnly для моего правила повторения "ExcludeDates", которое я сохраняю как значения только для даты. Я хочу, чтобы мой RRULE игнорировал только определенные даты.
Ранее в DDay мы могли указать:
if (!recurrenceOptions.ExcludeDates.IsNullOrEmpty ())
{
var periodList = new PeriodList ();
recurrenceOptions.ExcludeDates.ForEach (d =>
{
var period = new Period (new iCalDateTime (d), TimeSpan.FromDays (1)) { MatchesDateOnly = true };
periodList.Add (period);
});
iCalEvent.ExceptionDates.Add (periodList);
}
var occurences = iCalEvent.GetOccurrences (range.StartDate, range.EndDate);
Как я могу имитировать эту функцию в iCal.net?
1 ответ
Вы можете попробовать с RecurrencePatternEvaluator
var vEvent = new Event {
DtStart = new CalDateTime(newDateTime(2017, 3, 1, 9, 0, 0)),
DtEnd = new CalDateTime(newDateTime(2017, 3, 1, 10, 0, 0))
};
var recurrenceRule = new RecurrencePattern(FrequencyDayType.Weekly, 1) {
ByDay = new IList<IWeekday> { new WeekDay(DayOfWeek.Thursday) }
};
var recurrenceEvaluator = new RecurrencePatternEvaluator(recurrenceRule);
var searchStart = new DateTime(2017, 3, 1, 0, 0, 0);
var searchEnd = new DateTime(2017, 3, 17, 0, 0, 0);
var correctOccurrences = recurrenceEvaluator.Evaluate(vEvent.DtStart, searchStart, searchEnd, false);