Based on your business needs, you can create several calendars for different combination of dates, working hours, etc. Later, according to the pattern of work the project follows, these calendars can be associated to a project.
You can add exceptions that are very much specific to the requirements of the project. You can set exceptions to the base calendars to define non working days on which schedule activities are idle, for example, weekly off days and holidays. Also, you can set exceptions to define additional working hours for specific days. These exceptions are applied after the calendar is associated to a project.