Skip to content

Commit 2146ea0

Browse files
authored
RRULE Evaluation: Apply BYYEARDAY=366 only in leap years. (#621)
1 parent 36f2666 commit 2146ea0

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

Ical.Net/Evaluation/RecurrencePatternEvaluator.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,9 @@ private List<DateTime> GetYearDayVariants(List<DateTime> dates, RecurrencePatter
484484
var date1 = date;
485485
yearDayDates.AddRange(pattern.ByYearDay.Select(yearDay => yearDay > 0
486486
? date1.AddDays(-date1.DayOfYear + yearDay)
487-
: date1.AddDays(-date1.DayOfYear + 1).AddYears(1).AddDays(yearDay)));
487+
: date1.AddDays(-date1.DayOfYear + 1).AddYears(1).AddDays(yearDay))
488+
// Ignore the BY values that don't fit into the current year (i.e. +-366 in non-leap-years).
489+
.Where(d => d.Year == date1.Year));
488490
}
489491
return yearDayDates;
490492
}
@@ -500,7 +502,7 @@ private List<DateTime> GetYearDayVariants(List<DateTime> dates, RecurrencePatter
500502
? date.AddDays(-date.DayOfYear + yearDay)
501503
: date.AddDays(-date.DayOfYear + 1).AddYears(1).AddDays(yearDay);
502504

503-
if (newDate.DayOfYear == date.DayOfYear)
505+
if (newDate.Date == date.Date)
504506
{
505507
goto Next;
506508
}

0 commit comments

Comments
 (0)