From 7bc978b87af8cca5cde0de0d00bd5092346b9577 Mon Sep 17 00:00:00 2001 From: Luke Vella Date: Sat, 3 Aug 2024 22:25:44 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Better=20error=20handling=20for?= =?UTF-8?q?=20browser=20time=20zone=20support=20(#1240)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/utils/date-time-utils.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/web/src/utils/date-time-utils.ts b/apps/web/src/utils/date-time-utils.ts index 598b14ca3..f5a4871a6 100644 --- a/apps/web/src/utils/date-time-utils.ts +++ b/apps/web/src/utils/date-time-utils.ts @@ -1,5 +1,4 @@ import dayjs from "dayjs"; -import soft from "timezone-soft"; import { supportedTimeZones } from "@/utils/supported-time-zones"; @@ -20,8 +19,8 @@ export function parseIanaTimezone(timezone: string): { } export function getBrowserTimeZone() { - const res = soft(Intl.DateTimeFormat().resolvedOptions().timeZone)[0]; - return resolveGeographicTimeZone(res.iana); + const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; + return resolveGeographicTimeZone(timeZone); } export function resolveGeographicTimeZone(timezone: string) { @@ -29,7 +28,12 @@ export function resolveGeographicTimeZone(timezone: string) { if (!tz) { // find nearest timezone with the same offset - const offset = dayjs().tz(timezone).utcOffset(); + let offset = 0; + try { + offset = dayjs().tz(timezone).utcOffset(); + } catch (e) { + console.error(`Failed to resolve timezone ${timezone}`); + } return supportedTimeZones.find((tz) => { return dayjs().tz(tz, true).utcOffset() === offset; })!;