Code and docs

rrule.js demo

This is a demo and test app for rrule.js, a JavaScript library for working with recurrence rules for calendar dates.

Output

rule =

          
rule.origOptions

          
rule.toString()
rule.toText()
rule.all()

Input

Options

freq
Frequency
dtstart
The recurrence start. Besides being the base for the recurrence, missing parameters in the final recurrence instances will also be extracted from this date. If not given, new Date will be used instead.
tzid
The timezone for the rule. If present, all recurrences will be interpreted as being in the local time of the given timezone. If not present, UTC will be used instead.
until
If given, this must be a Date instance, that will specify the limit of the recurrence. If a recurrence instance happens to be the same as the Date instance given in the until argument, this will be the last occurrence.
count
How many occurrences will be generated.
interval
The interval between each freq iteration. For example, when using RRule.YEARLY, an interval of 2 means once every two years, but with RRule.HOURLY, it means once every two hours. The default interval is 1.
wkst
The week start day. Must be one of the RRule.MO, RRule.TU, RRule.WE constants, or an integer, specifying the first day of the week. This will affect recurrences based on weekly periods. The default week start is RRule.MO.
byweekday
If given, it must be either an integer ( 0 == RRule.MO), a sequence of integers, one of the weekday constants ( RRule.MO, RRule.TU, etc), or a sequence of these constants. When given, these variables will define the weekdays where the recurrence will be applied. It's also possible to use an argument n for the weekday instances, which will mean the nth occurrence of this weekday in the period. For example, with RRule.MONTHLY, or with RRule.YEARLY and BYMONTH, using RRule.FR.clone(+1) in byweekday will specify the first friday of the month where the recurrence happens. Notice that the RFC documentation, this is specified as BYDAY, but was renamed to avoid the ambiguity of that argument.
bymonth
If given, it must be either an integer, or a sequence of integers, meaning the months to apply the recurrence to.
bysetpos
If given, it must be either an integer, or a sequence of integers, positive or negative. Each given integer will specify an occurrence number, corresponding to the nth occurrence of the rule inside the frequency period. For example, a bysetpos of -1 if combined with a RRule.MONTHLY frequency, and a byweekday of ( RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR), will result in the last work day of every month.
bymonthday
If given, it must be either an integer, or a sequence of integers, meaning the month days to apply the recurrence to.
byyearday
If given, it must be either an integer, or a sequence of integers, meaning the year days to apply the recurrence to.
byweekno
If given, it must be either an integer, or a sequence of integers, meaning the week numbers to apply the recurrence to. Week numbers have the meaning described in ISO8601, that is, the first week of the year is that containing at least four days of the new year.
byhour
If given, it must be either an integer, or a sequence of integers, meaning the hours to apply the recurrence to.
byminute
If given, it must be either an integer, or a sequence of integers, meaning the minutes to apply the recurrence to.
bysecond
If given, it must be either an integer, or a sequence of integers, meaning the seconds to apply the recurrence to.
byeaster
This is an extension to the RFC specification which the Python implementation provides. Not implemented in the JavaScript version.

RRULE string

Enter an RRULE as per iCalendar RFC.

Examples:

  • FREQ=WEEKLY;BYDAY=MO,WE
  • FREQ=MONTHLY;BYMONTHDAY=10,15;COUNT=20
  • FREQ=DAILY;INTERVAL=3;COUNT=10
  • FREQ=MONTHLY;BYDAY=-2FR;COUNT=7

Text input

Examples:

  • Every weekday
  • Every 2 weeks on Tuesday
  • Every week on Monday, Wednesday
  • Every month on the 2nd last Friday for 7 times
  • Every 6 months
Fork me on GitHub