Scheduler - Timezone
Display events correctly across different timezones.
Overview
The Event Calendar and Event Timeline accepts event dates (start and end) as strings and supports two semantics depending on the format:
- Instant strings end with
"Z"and represent a fixed moment in UTC, for example"2024-01-10T13:00:00Z". - Wall-time strings have no
"Z"suffix and represent a local date/time that is interpreted in the event'stimezone, for example"2024-01-10T09:00:00".
All events are rendered in the timezone defined by the displayTimezone prop.
Event date values
Instant strings (with Z)
A string ending with "Z" represents a fixed moment in time.
const event = {
id: '1',
title: 'Team sync',
start: '2024-01-10T13:00:00Z', // 13:00 UTC
end: '2024-01-10T14:00:00Z',
};
This event is displayed as:
14:00inEurope/Paris(UTC+1)08:00inAmerica/New_York(UTC−5)
Wall-time strings (without Z)
A string without a "Z" suffix represents a local time.
It is interpreted in event.timezone (or "default" if no timezone is set).
const event = {
id: '1',
title: 'Morning standup',
start: '2024-01-10T09:00:00', // 09:00 local time in New York
end: '2024-01-10T09:30:00',
timezone: 'America/New_York',
};
This event always happens at 09:00 in New York, regardless of DST changes.
NY Morning Standup
Paris Lunch
Tokyo Evening Review
The timezone field
The timezone field on an event determines:
- How wall-time strings are interpreted — a start of
"2024-01-10T09:00:00"withtimezone: "America/New_York"means 09:00 in New York (14:00 UTC in winter, 13:00 UTC in summer). - How recurring event rules are evaluated — a daily event at 09:00 in
Europe/Parisstays at 09:00 local time even across DST boundaries.
For instant strings (ending with "Z"), the timezone field does not affect how the start/end are resolved — they are already absolute points in time.
However, it is still used for recurring event calculations.
Rendering behavior
The displayTimezone prop controls how all events are rendered in the UI.
Changing displayTimezone only affects the visual representation.
It does not modify the event data or change when an event occurs.
<EventCalendar
// ...other props
displayTimezone="Europe/Paris"
/>
NY Morning Sync
Tokyo Evening Review
Paris Afternoon Workshop
Cross-Team Standup
Paris Design Review
Tokyo Sprint Planning
Supported timezones
Both the displayTimezone prop and the event's timezone field accept the following values:
| Timezone | Description |
|---|---|
"UTC" |
Will use the Coordinated Universal Time |
"default" |
Will use the default timezone of the date library |
"system" |
Will use the system's local timezone |
| IANA standard zones | Any IANA timezone, for example "Europe/Paris" or "America/New_York". Full list |
Creating an event
When creating events from the UI, the entered date/time is interpreted in the current displayTimezone.
The created event does not include an explicit timezone field.
As a result, when the event is processed, its original timezone is treated as "default".
Recurring events and timezones
Recurring events define a pattern that is evaluated in a specific timezone.
For example, consider a daily recurring event that happens every day at 09:00
in the Europe/Paris timezone:
const event = {
id: '1',
title: 'Daily standup',
start: '2024-03-01T08:00:00Z', // 09:00 in Paris (UTC+1 in winter)
end: '2024-03-01T09:00:00Z',
timezone: 'Europe/Paris',
rrule: 'FREQ=DAILY',
};
Even when daylight saving time starts (March 31 in 2024), the event continues to happen at 09:00 local time in Europe/Paris.
The Scheduler uses the event's timezone to interpret and expand
the recurrence pattern correctly across DST boundaries.
Tokyo Sunrise Daily
LA Weekly Afternoon
NY event
NY Weekly
Tokyo Sunrise Daily
Paris event
Tokyo event
Tokyo Sunrise Daily
NY Weekly
Tokyo Sunrise Daily
LA event
Tokyo Sunrise Daily
Sydney Weekly Skip One
Tokyo Sunrise Daily
Paris Monthly Evening
Tokyo Sunrise Daily