Data Source & Methodology

AuthoritativeDataSource: ISO 8601 (Date and time formats), IANA Time Zone Database (TZ identifiers, daylight saving rules). All calculations strictly follow the formulas and rules derived from these standards.

  • ISO 8601 (latest edition) — formatting & parsing of dates and times.
  • IANA TZDB — time zone identifiers and offset transitions.

The Formula Explained

Offset addition:

Let \( t_0 \) be the start datetime, \( \Delta \) the offset, and \( \phi \) the recurrence step. The single appointment start is:

\[ t_1 = t_0 + \Delta \]

If business days only is enabled with working-day indicator \( W(d) \in \{0,1\} \) and holiday set \( \mathcal{H} \), advance day-by-day until conditions meet:

\[ t_1' = \min \{ t \ge t_1 \mid W(\mathrm{dow}(t))=1,\ \mathrm{date}(t)\notin\mathcal{H},\ \mathrm{time}(t)\in[\tau_s,\tau_e] \} \]

Buffers and duration:

\[ t_{\text{start}} = t_1' - b_{\text{before}}, \qquad t_{\text{end}} = t_1' + d + b_{\text{after}} \]

Recurrence for occurrence \( k=0,\dots,n-1 \):

\[ t_{k} = t_{\text{start}} + k \cdot \phi,\quad u_{k} = t_{\text{end}} + k \cdot \phi \]

Variable Glossary

VariableMeaning
\( t_0 \)Start datetime (in selected time zone).
\( \Delta \)Offset to add (minutes/hours/days/weeks/months).
\( W \)Working-day indicator for chosen weekdays.
\( \mathcal{H} \)Set of holiday dates to skip.
\( \tau_s, \tau_e \)Working hours start and end.
\( b_{\text{before}}, b_{\text{after}} \)Buffers before/after the appointment.
\( d \)Meeting duration.
\( \phi \)Recurrence step (days/weeks/months).

How It Works: A Step-by-Step Example

Goal: From 2025-10-27 10:00 in Europe/Rome, add 3 days, business days only, working hours 09:00–18:00, skip holiday 2025-10-28, duration 60 min. No buffers. One occurrence.

  1. Raw offset: \( t_1 = 2025\text{-}10\text{-}30\ 10{:}00 \) (3 calendar days).
  2. Enforce business days & holiday: 2025-10-28 is a holiday; the next valid working day/time at or after \( t_1 \) remains 2025-10-30 10:00 (already a Thu and within 09:00–18:00).
  3. Start = 10:00; End \(=10{:}00+60\ \text{min}=11{:}00\).

Result: Appointment on Thu, 30 Oct 2025 10:00–11:00 (Europe/Rome).

Frequently Asked Questions

What does “business days only” enforce?

It restricts results to your selected weekdays (e.g., Mon–Fri) and skips any holiday dates you list.

How are months handled when adding months or setting monthly repeats?

If the target month has fewer days than the source (e.g., adding one month to Jan 31), the date clamps to the last valid day of the month.

Do you account for daylight saving time changes?

Yes—rendering uses the selected IANA time zone and your local device’s zone. Offsets reflect DST transitions automatically.

Can I export multiple appointments to my calendar?

Yes. Generate a series (Occurrences ≥ 2) and click “Export .ics” to download a multi-event calendar file.

What if my computed time falls outside working hours?

The time is pushed forward to the next valid working time window while respecting business days and holidays.

Which time zone is used for the ICS file?

Events are exported in UTC with descriptive text of the selected time zone in the summary for broad calendar compatibility.

Can I model prep/travel time?

Use Buffer Before/After to block time around the appointment. These are included in the “Total Buffers” metric and end time.

Tool developed by Ugo Candido. Content verified by the CalcDomain Editorial Board.
Last accuracy review: