diff --git a/apps/web/src/components/poll/manage-poll.tsx b/apps/web/src/components/poll/manage-poll.tsx index 0513cbd22..3a8a463ec 100644 --- a/apps/web/src/components/poll/manage-poll.tsx +++ b/apps/web/src/components/poll/manage-poll.tsx @@ -77,9 +77,11 @@ const ManagePoll: React.FunctionComponent<{ name="pollOptions" title={poll.title} defaultValues={{ - navigationDate: poll.options[0].start.toString(), + navigationDate: dayjs(poll.options[0].start) + .utc() + .format("YYYY-MM-DD"), options: poll.options.map((option) => { - const start = dayjs(option.start); + const start = dayjs(option.start).utc(); return option.duration > 0 ? { type: "timeSlot", diff --git a/apps/web/src/server/routers/polls.ts b/apps/web/src/server/routers/polls.ts index 205e47b82..47dd5c54d 100644 --- a/apps/web/src/server/routers/polls.ts +++ b/apps/web/src/server/routers/polls.ts @@ -102,7 +102,7 @@ export const polls = router({ options: { createMany: { data: input.options.map((option) => ({ - start: new Date(option.startDate), + start: new Date(`${option.startDate}Z`), duration: option.endDate ? dayjs(option.endDate).diff( dayjs(option.startDate), @@ -167,13 +167,13 @@ export const polls = router({ const [start, end] = optionValue.split("/"); if (end) { return { - start: new Date(start), + start: new Date(`${start}Z`), duration: dayjs(end).diff(dayjs(start), "minute"), pollId, }; } else { return { - start: new Date(start.substring(0, 10) + "T00:00:00"), + start: new Date(start.substring(0, 10) + "T00:00:00Z"), pollId, }; } diff --git a/apps/web/src/utils/date-time-utils.ts b/apps/web/src/utils/date-time-utils.ts index 4b27388e3..ef9fb8e1c 100644 --- a/apps/web/src/utils/date-time-utils.ts +++ b/apps/web/src/utils/date-time-utils.ts @@ -85,7 +85,7 @@ export const decodeOptions = ( }; const parseDateOption = (option: Option): ParsedDateOption => { - const date = dayjs(option.start); + const date = dayjs(option.start).utc(); return { type: "date", optionId: option.id, @@ -101,10 +101,11 @@ const parseTimeSlotOption = ( timeZone: string | null, targetTimeZone: string, ): ParsedTimeSlotOption => { + const start = dayjs(option.start).utc(); const startDate = timeZone && targetTimeZone - ? dayjs(option.start).tz(timeZone, true).tz(targetTimeZone) - : dayjs(option.start); + ? start.tz(timeZone, true).tz(targetTimeZone) + : start; const endDate = startDate.add(option.duration, "minute");