Cleaning periodic work calendar calculator

Calculate periodic calendar [task,nominal due,scheduled] and unscheduled occurrences with your own figures.

Your numbers

Use the units shown. Results update as you change valid inputs.

Use periodic calendar [task,nominal due,scheduled] and unscheduled occurrences to compare changes to your inputs. The method and limits below explain the scope.

Examples

Examples

Try the starting example

Tasks [ID,first due ISO date,interval days]; enter JSON
[["A","2026-11-01",7],["B","2026-11-03",14]]
Contract start ISO date
2026-11-01
Contract end excluded ISO date
2026-12-01
Forbidden ISO dates; enter JSON
["2026-11-08"]
Periodic calendar [task,nominal due,scheduled] (JSON)
[["A","2026-11-01","2026-11-01"],["B","2026-11-03","2026-11-03"],["A","2026-11-08","2026-11-09"],["A","2026-11-15","2026-11-15"],["B","2026-11-17","2026-11-17"],["A","2026-11-22","2026-11-22"],["A","2026-11-29","2026-11-29"]]
Unscheduled occurrences (count)
0

Try another scenario

Tasks [ID,first due ISO date,interval days]; enter JSON
[["A","2026-11-02",10],["B","2026-11-04",14]]
Contract start ISO date
2026-11-01
Contract end excluded ISO date
2026-12-01
Forbidden ISO dates; enter JSON
["2026-11-12","2026-11-13"]
Periodic calendar [task,nominal due,scheduled] (JSON)
[["A","2026-11-02","2026-11-02"],["B","2026-11-04","2026-11-04"],["A","2026-11-12","2026-11-14"],["B","2026-11-18","2026-11-18"],["A","2026-11-22","2026-11-22"]]
Unscheduled occurrences (count)
0
Calculation method

Calculation method

Periodic calendar [task,nominal due,scheduled] (JSON)

Generate firstDue+k×interval in horizon; move each due forward past forbidden dates; null if shifted beyond horizon; next recurrence remains anchored to nominal due.

Unscheduled occurrences (count)

Count occurrences with null date after bounded shift.

Symbols and units
a
Tasks [ID,first due ISO date,interval days]; enter JSON
b
Contract start ISO date
c
Contract end excluded ISO date
d
Forbidden ISO dates; enter JSON

Use the units shown. A list keeps the order in which you enter its values. The symbol ^ means “raised to the power of”.

Assumptions & limits

Assumptions & limits

  • Fixed-day interval recurrence shifted forward to first allowed date, with collisions retained as separate work items. Supported limits: All numeric inputs and computed intermediates must remain finite. Supported numeric input magnitude is zero or 1e-12 through 1e12 in absolute value; reject values outside this bounded range. All lists/JSON record tables are limited to 100 records unless a stricter bound is stated; reject malformed record arity and wrong member types. Valid dates, horizon1..366 days; positive integer intervals; forbidden dates<=366; <=100 tasks.
Are these inputs private?

These calculations run in your browser. A shared link contains the values you choose to share. Only questions submitted to the separate AI finder are sent to OpenAI.

Share this page
Share this calculator

Leave unchecked to share the page without your entered values.