Repository navigation
05 Calendars
A calendar determines which days are working days. It directly determines how duration converts to dates: the same "3 workdays" lands on completely different dates under a "two-day weekend" versus a "one-day weekend" calendar.
Every project comes with its own calendar, made up of two parts:
- Weekly working days—which of the seven days of the week are worked (Monday to Friday by default).
- Exceptions—patches on top of the weekly working days, such as "October 1 is a holiday".
Change the working days or an exception and the whole plan is recomputed immediately—all scheduling, loading, and earned value change along with it.
Switch to the Calendar view in the top bar: a month calendar, where each date has one of three state colors—
| State | Meaning |
|---|---|
| Working day | Worked per the weekly working-day rule |
| Non-working day | Off per the weekly working-day rule |
| Exception | Individually designated as off (or individually designated as working) |
Click a date to toggle its exception state.
Exceptions can be added one day at a time, or a whole range at once (for example, seven days of the National Day holiday).
A range exception is expanded day by day in the command layer—so adding "seven days off" is one record in the undo stack, and a single
Ctrl+Zundoes it all cleanly.
A resource can carry its own calendar (calendarId), otherwise the project default is used. Suited to:
- part-time staff who work only three days a week
- rented equipment available only during the rental period
- an outsourcing team following its own holidays
The Calendar days unit for dependency lag counts normally across non-working days; the Workdays unit skips them per the calendar. That's the only difference between the two—don't mix them up.
When the gap between adjacent working days exceeds 3660 days (which you can create with one maximum-length range exception), older versions of the date utility throw, while the new version silently returns the actual next working day.
The new behavior is more correct, but the failure mode changed from "crashing loudly" to "skipping silently". This is a known, intentionally kept difference; see Known limitations.
Next: Resources and Assignments.