Skip to content

05 Calendars

zhuoguangming edited this page Oct 5, 2026 · 1 revision

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.

Project calendar

Every project comes with its own calendar, made up of two parts:

  1. Weekly working days—which of the seven days of the week are worked (Monday to Friday by default).
  2. 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.

Calendar view

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.

Adding exceptions by day / by range

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+Z undoes it all cleanly.

A resource's own calendar

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

Calendar days vs workdays

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.

One behavior that's easy to misjudge

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.

Clone this wiki locally