> ## Documentation Index
> Fetch the complete documentation index at: https://docs.timetracker.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Working hours and days off

> Set hours per day of the week, add split shifts and overnight periods, mark days off, and handle one-off changes with schedule exceptions.

Hours are set **per day of the week**, not once for the whole week. Monday can be
09:00 to 17:00 while Wednesday is 10:00 to 14:00 and Tuesday is off entirely.

## How the day rows work

Open a schedule in **Settings → Schedules**. Below the preview strip you get one
row per day, ordered by your **Week starts on** setting.

Each row has:

* A **switch** and the day name. Switch it off and the row reads **Day off**.
* One or more **work periods**, each with a start time, the word `to`, an end
  time and the length of that period.
* A **three-dot menu** on each period with **Add work period** and **Delete**.

Above the rows, the header shows the weekly total, such as **40h / week**. It
updates as you type.

<Note>
  A working day must have at least one work period. Delete the last period on a day
  and the day switches itself off.
</Note>

## Defaults

| Action              | What you get                                               |
| ------------------- | ---------------------------------------------------------- |
| New schedule        | Monday to Friday, 09:00 to 17:00. Saturday and Sunday off. |
| Switch a day on     | One period, 09:00 to 17:00.                                |
| **Add work period** | A new period, 13:00 to 17:00, which you then edit.         |

## A realistic pattern

Ana Ferreira is a freelance copywriter at Northwind Studio. She works Monday,
Wednesday and Friday only.

Tom Whitfield creates a schedule called `Part-time Mon/Wed/Fri`:

| Day       | Setting | Hours               |
| --------- | ------- | ------------------- |
| Monday    | On      | 09:00 to 17:00 – 8h |
| Tuesday   | Off     | –                   |
| Wednesday | On      | 09:00 to 17:00 – 8h |
| Thursday  | Off     | –                   |
| Friday    | On      | 09:00 to 13:00 – 4h |
| Saturday  | Off     | –                   |
| Sunday    | Off     | –                   |

The header reads **20h / week**. Ana's timesheet now expects 20 hours, not 40, so
a normal week no longer looks like a shortfall. See
[/timesheets/expected-vs-tracked-hours](/timesheets/expected-vs-tracked-hours).

## Split shifts

A day can hold more than one period. Use this for a lunch-split day, or a support
shift with a gap in the middle.

<Steps>
  <Step title="Open the day's three-dot menu">
    Click the menu at the end of any period on that day.
  </Step>

  <Step title="Choose Add work period">
    A second period appears, starting at 13:00.
  </Step>

  <Step title="Set both periods">
    For example 09:00 to 12:00 and 13:00 to 17:00.
  </Step>
</Steps>

The day's expected hours are the **sum of its periods**. In the example above,
3h + 4h = **7h** for that day. Lunch is not counted, because it is the gap
between two periods rather than part of one.

<Tip>
  If you do not care about unpaid breaks, use a single 09:00 to 17:00 period. Only
  split the day when the gap genuinely should not count toward expected hours.
</Tip>

## Overnight shifts

A period that ends at or before its start time runs past midnight. TimeTracker
detects this and shows an **Ends next day** badge with a moon icon.

| Period         | Length | Badge         |
| -------------- | ------ | ------------- |
| 09:00 to 17:00 | 8h     | –             |
| 22:00 to 06:00 | 8h     | Ends next day |
| 23:30 to 07:30 | 8h     | Ends next day |

<Warning>
  A period cannot be a full 24 hours. Split it into two periods instead.
</Warning>

## Days off

Switching a day off means zero expected hours for that weekday, every week.

Use a day-off row for a **recurring** pattern – weekends, a non-working
Wednesday, a four-day week. For a **one-off** date, use an exception instead.

## One-off changes: exceptions

The **Exceptions** panel below Assignments handles single dates. Each exception
targets the workspace, a group, or one person.

| Type                  | What it does                                                         |
| --------------------- | -------------------------------------------------------------------- |
| **Day off**           | The day becomes non-working. Zero expected hours.                    |
| **Public holiday**    | Same effect, labelled as a holiday.                                  |
| **Leave**             | Same effect, labelled as leave.                                      |
| **Working day**       | Turns a non-working day into a working one with the hours you enter. |
| **Replacement hours** | Replaces the day's normal hours with the ones you enter.             |
| **Additional period** | Adds an extra period on top of the day's normal hours.               |

**Day off**, **Public holiday** and **Leave** carry no hours. **Working day**,
**Replacement hours** and **Additional period** need at least one period.

### How to add an exception

<Steps>
  <Step title="Click Add exception">
    In the **Exceptions** panel on **Settings → Schedules**.
  </Step>

  <Step title="Choose who it applies to">
    **Everyone (workspace)**, **A group**, or **One person**.
  </Step>

  <Step title="Pick the date and type">
    Set **Date** and **Type**.
  </Step>

  <Step title="Add hours if the type needs them">
    For a working day, replacement hours or an additional period, set the start
    and end times. Use **Add period** for more than one.
  </Step>

  <Step title="Add a reason and save">
    **Reason** is optional, such as `national holiday`. Click **Add exception**.
  </Step>
</Steps>

The table lists **Date**, **Applies to**, **Type** and **Hours**. Removing an
exception asks you to confirm, then *"The date returns to its inherited
schedule."*

### Exceptions and precedence

An exception only applies when its level is at least as specific as the person's
governing assignment.

| The person is on…     | A workspace exception | A group exception | Their own exception |
| --------------------- | --------------------- | ----------------- | ------------------- |
| the workspace default | applies               | applies           | applies             |
| a group schedule      | ignored               | applies           | applies             |
| their own schedule    | ignored               | ignored           | applies             |

<Warning>
  This is the rule people trip over. If Ana has her own schedule, a company-wide
  shutdown day added at the workspace level does **not** reach her. Add a
  person-level exception for her too.
</Warning>

### Exceptions are not the same as company holidays

Two different lists exist, and they do different jobs.

|                                       | Schedule exception                | Company holiday                |
| ------------------------------------- | --------------------------------- | ------------------------------ |
| Where                                 | Settings → Schedules → Exceptions | Settings → Time off → Holidays |
| Changes expected hours                | Yes                               | No                             |
| Skipped when counting a leave request | No                                | Yes                            |
| Repeats every year                    | No                                | Optional                       |

Use a **company holiday** when you want the day skipped from leave balances and
shown on the Time Off timeline. Use a **schedule exception** when you want the
person's expected hours for that date to change. Many teams add both. See
[/time-off/holidays](/time-off/holidays).

## What happens next

* Expected hours change for every day you edited, on every date the schedule
  covers.
* **My Schedule** shows the new hours and marks exception days with a badge.
* The Planner shades non-working days and holidays on the grid.
* Time-off requests skip non-working days, so a request across a long weekend
  consumes less balance.

## Permissions

Editing hours, days off and exceptions all need `schedule.manage` – Owner and
Admin by default.

## Common questions

<AccordionGroup>
  <Accordion title="Do breaks get subtracted automatically?">
    No. There is no separate break field. Model an unpaid break as a gap between
    two work periods on that day.
  </Accordion>

  <Accordion title="Can I set different hours for the same weekday in different weeks?">
    Yes, with a two-week schedule. Week A and Week B each have their own seven day
    rows. See /schedules/create-a-schedule.
  </Accordion>

  <Accordion title="How many periods can one day have?">
    There is no fixed limit. Add as many as the day really needs.
  </Accordion>

  <Accordion title="How do I give one person a single extra working Saturday?">
    Add an exception for that person, that date, type **Working day**, with the
    hours they will work.
  </Accordion>

  <Accordion title="Does a day-off row stop someone tracking time?">
    No. People can still track time on a non-working day. The day expects
    zero hours, so the extra time shows as tracked above expected.
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Problem                        | What to do                                                                                      |
| ------------------------------ | ----------------------------------------------------------------------------------------------- |
| The weekly total looks wrong   | Check for split shifts – the gap between periods is not counted.                                |
| A period will not save         | It must end after it starts, unless it crosses midnight. Check the **Ends next day** badge.     |
| An exception did not apply     | Its level is less specific than the person's assignment. Re-add it at their level.              |
| A holiday still consumed leave | A schedule exception does not skip leave. Add it in **Settings → Time off → Holidays** instead. |

## Related guides

<CardGroup cols={2}>
  <Card title="Create a schedule" href="/schedules/create-a-schedule">
    Name, repeat, week start and timezone.
  </Card>

  <Card title="Assign a schedule" href="/schedules/assign-a-schedule">
    Who follows which schedule.
  </Card>

  <Card title="Company holidays" href="/time-off/holidays">
    The other list, and what it is for.
  </Card>

  <Card title="Expected vs tracked hours" href="/timesheets/expected-vs-tracked-hours">
    Where these hours end up.
  </Card>

  <Card title="My Schedule" href="/schedules/my-schedule">
    How the pattern looks to the person on it.
  </Card>
</CardGroup>
