You can use UltimateCalendar as a scheduler. SpecialDates collection allows you to set any number of special dates. Each special date can have a start date, an end date, a description in the form of HTML content, a recurring base and a recurring frequency.

You can use the RecurringBase property to repeat a special date based on Day, Month or Year. Along with this feature you can use RecurringFrequency to set how often it will occur.

With the use of StartDate and EndDate properties, [Presentation] starts on January 11th, occurs every three weeks and ends on March 15th. [PayBills] occurs on the 3rd of every month and continues indefinitely. [Christmas] occurs on December 25th every year, while some others like [Thanksgiving] occurs on different dates every year.

This sample provides the methods to calculate those non-recurring holidays as well.