The eXICalendar/JS library implements the ICalendar data format, according with Internet Calendaring and Scheduling Core Object Specification, RFC 5545, especially the RRULE property, which defines a rule or repeating pattern for recurring events, to-dos, journal entries, or time zone definitions. The recurrence rule, is used in computing the recurrence set. The recurrence set is the complete set of recurrence instances for a calendar component. The recurrence set is generated by considering the initial "DTSTART" property. The eXICalendar/JS is a HTML standalone-component, written in JavaScript, that uses no third-party libraries.

Calendar
All
Your browser does not support the HTML5 canvas tag.
Change the rule-fields or RRULE filed to show new recurrences.
var oRecur = exontrol.ICalendar.IRecur.Parse("FREQ=MONTHLY;BYMONTHDAY=28,29,30,31;BYSETPOS=-1;COUNT=12");
console.log(oRecur.error() || oRecur.all().reduce(function(prev, dateTimeN)
{
    return prev + new Date(dateTimeN).toUTCString() + "\n";
}, ""));
Click the "FREQ=MONTHLY;…" to change the recurrence-expression. The supported rules are: DTSTART, FREQ, UNTIL, COUNT, INTERVAL, BYSECOND, BYMINUTE, BYHOUR, BYDAY, BYMONTHDAY, BYYEARDAY, BYWEEKNO, BYMONTH, BYSETPOS, WKST.