From 3f65781d27a32d5feb8620a54957dabab3f4a8c9 Mon Sep 17 00:00:00 2001 From: Massedil Date: Fri, 1 Nov 2024 19:04:39 +0100 Subject: [PATCH] Issue #1511 tzOffset need to use browserTimeZone and not userActualTimezone Javascript Date() objects are based on "the host environment (user's device)". https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date --- src/views/Event/EditView.vue | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/views/Event/EditView.vue b/src/views/Event/EditView.vue index a1be78408..478cbda5b 100644 --- a/src/views/Event/EditView.vue +++ b/src/views/Event/EditView.vue @@ -1313,24 +1313,35 @@ const timezone = computed({ }, }); +// Timezone specified in user settings const userTimezone = computed((): string | undefined => { return loggedUser.value?.settings?.timezone; }); +const browserTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; + +// Timezone specified in user settings or local timezone browser if unavailable const userActualTimezone = computed((): string => { if (userTimezone.value) { return userTimezone.value; } - return Intl.DateTimeFormat().resolvedOptions().timeZone; + return browserTimeZone; }); const tzOffset = (date: Date | null): number => { - if (timezone.value && date) { - const eventUTCOffset = getTimezoneOffset(timezone.value, date); - const localUTCOffset = getTimezoneOffset(userActualTimezone.value, date); - return (eventUTCOffset - localUTCOffset) / (60 * 1000); + if (!timezone.value || !date) { + return 0; } - return 0; + // diff between UTC and selected timezone + // example: Asia/Shanghai is + 8 hours + const eventUTCOffset = getTimezoneOffset(timezone.value, date); + + // diff between UTC and local browser timezone + // example: Europe/Paris is + 1 hour (or +2 depending of daylight saving time) + const localUTCOffset = getTimezoneOffset(browserTimeZone, date); + + // example : offset is 8-1=7 + return (eventUTCOffset - localUTCOffset) / (60 * 1000); }; const eventPhysicalAddress = computed({