Multi-Timezone Display
The event calendar works with local times by default, but ships with support for changing the timezone. The conversions and correct output relies on either of these three external libraries: luxon, moment-timezone and day.js. For installing and using these libraries check out this guide.
There are two angles regarding timezones:
dataTimezone- the calendar expects this format and returns this format. It is'local'by default if the date-times don't contain any timezone information.
It can be set globally on the calendar using the dataTimezone option, or specifically for the event using the timezone property of the event data.
displayTimezone- the calendar displays the events in this timezone. The date-times will be converted from thedataTimezoneand displayed accordingly. It is'local'by default
Demo
Data timezone is:
Display timezone is:
The local timezone your browser is in:
import { dayjsTimezone } from '@mobiscroll/react';
import dayjs from 'dayjs';
import timezone from 'dayjs/plugin/timezone';
import utc from 'dayjs/plugin/utc';
// Extend Day.js with UTC and timezone plugins
dayjs.extend(utc);
dayjs.extend(timezone);
// Setup Mobiscroll Day.js plugin
dayjsTimezone.dayjs = dayjs;
function App() {
return <Eventcalendar
dataTimezone='utc'
displayTimezone='local '
timezonePlugin={dayjsTimezone}
view={{ agenda: { type: 'week' }}}
/>
}

import { dayjsTimezone, Eventcalendar, setOptions } from '@mobiscroll/react';
import dayjs from 'dayjs';
import timezone from 'dayjs/plugin/timezone';
import utc from 'dayjs/plugin/utc';
import { useMemo } from 'react';
dayjs.extend(utc);
dayjs.extend(timezone);
dayjsTimezone.dayjs = dayjs;
setOptions({
locale: ,
theme: ' ',
themeVariant: ' '
});
function App() {
const myEvents = useMemo(
() => [
{
start: '2026-10-20T07:00',
end: '2026-10-20T09:00',
title: 'Stakeholder mtg.',
color: '#d64646',
},
{
start: '2026-10-23T18:00',
end: '2026-10-23T19:30',
title: 'Wrapup mtg.',
color: '#ecbc72',
},
{
start: '2026-10-20T14:00',
end: '2026-10-20T18:00',
title: 'Business of Software Conference',
color: '#ff6d42',
},
{
start: '2026-10-21T20:00',
end: '2026-10-21T21:50',
title: 'Product Team mtg.',
color: '#913aa7',
},
{
start: '2026-10-19T13:00',
end: '2026-10-19T15:00',
title: 'Decision Making mtg.',
color: '#46c3d6',
},
{
start: '2026-10-21T13:00',
end: '2026-10-21T14:00',
title: 'Quick mtg. with Martin',
color: '#50b166',
},
{
start: '2026-10-23T12:00',
end: '2026-10-23T16:00',
color: '#5bb7c5',
title: 'Team-Building',
},
],
[],
);
const myView = useMemo(() => ({ agenda: { type: 'week' } }), []);
return <Eventcalendar data={myEvents} dataTimezone="utc" displayTimezone="local" timezonePlugin={dayjsTimezone} view={myView} />;
}
export default App;
import { dayjsTimezone, Eventcalendar, MbscCalendarEvent, MbscEventcalendarView, setOptions } from '@mobiscroll/react';
import dayjs from 'dayjs';
import timezone from 'dayjs/plugin/timezone';
import utc from 'dayjs/plugin/utc';
import { FC, useMemo } from 'react';
dayjs.extend(utc);
dayjs.extend(timezone);
dayjsTimezone.dayjs = dayjs;
setOptions({
locale: ,
theme: ' ',
themeVariant: ' '
});
const App: FC = () => {
const myEvents = useMemo<MbscCalendarEvent[]>(
() => [
{
start: '2026-10-20T07:00',
end: '2026-10-20T09:00',
title: 'Stakeholder mtg.',
color: '#d64646',
},
{
start: '2026-10-23T18:00',
end: '2026-10-23T19:30',
title: 'Wrapup mtg.',
color: '#ecbc72',
},
{
start: '2026-10-20T14:00',
end: '2026-10-20T18:00',
title: 'Business of Software Conference',
color: '#ff6d42',
},
{
start: '2026-10-21T20:00',
end: '2026-10-21T21:50',
title: 'Product Team mtg.',
color: '#913aa7',
},
{
start: '2026-10-19T13:00',
end: '2026-10-19T15:00',
title: 'Decision Making mtg.',
color: '#46c3d6',
},
{
start: '2026-10-21T13:00',
end: '2026-10-21T14:00',
title: 'Quick mtg. with Martin',
color: '#50b166',
},
{
start: '2026-10-23T12:00',
end: '2026-10-23T16:00',
color: '#5bb7c5',
title: 'Team-Building',
},
],
[],
);
const myView = useMemo<MbscEventcalendarView>(() => ({ agenda: { type: 'week' } }), []);
return <Eventcalendar data={myEvents} dataTimezone="utc" displayTimezone="local" timezonePlugin={dayjsTimezone} view={myView} />;
};
export default App;