diff --git a/resources/js/components/content/partials/show/CalendarShowEvent.vue b/resources/js/components/content/partials/show/CalendarShowEvent.vue index d72f9a1..249471e 100644 --- a/resources/js/components/content/partials/show/CalendarShowEvent.vue +++ b/resources/js/components/content/partials/show/CalendarShowEvent.vue @@ -5,6 +5,7 @@ import type {calendarShowEvent, ShowEventActionTrigger} from "@models/misc/calen import {calendarShowEventMenu} from "@models/misc/calendarShowEvent"; import { ref } from 'vue'; import ContextMenu from '@partials/ContextMenu.vue'; +import { formatTime } from "@/helpers/DateFormatter.ts"; const emit = defineEmits([ 'contextMenuEditInstance', @@ -57,18 +58,13 @@ const contextMenuAction = (action: ShowEventActionTrigger, item: Object) => { emit(action, selectedShowInstance.value.showInstanceIndex); contextMenu.value.visible = false; }; - -const formatTime = (dateString: string) => { - const date = new Date(dateString); - return date.toLocaleTimeString([], {hour: '2-digit', minute: '2-digit'}); -} diff --git a/resources/js/composables/content/models/misc/calendarShowEvent.ts b/resources/js/composables/content/models/misc/calendarShowEvent.ts index eb9a05a..0dc8710 100644 --- a/resources/js/composables/content/models/misc/calendarShowEvent.ts +++ b/resources/js/composables/content/models/misc/calendarShowEvent.ts @@ -6,7 +6,7 @@ export interface calendarShowEvent { title: string, color: string, start: Date, - end: Date + end: Date, timed: boolean, } diff --git a/resources/js/helpers/DateFormatter.ts b/resources/js/helpers/DateFormatter.ts index d6e2e51..c43b01f 100644 --- a/resources/js/helpers/DateFormatter.ts +++ b/resources/js/helpers/DateFormatter.ts @@ -1,3 +1,6 @@ +import {useAuthStore} from "@/stores/auth.store.ts"; +import { DateTime } from "luxon"; + export function dateFormatter(date: Date = new Date()): string { return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`; } @@ -28,4 +31,38 @@ export function getHoursMinutesFromString(timeString: string): Date { const [ h, m ] = timeString.split(":"); const ms = new Date().setHours(h,m); return new Date(ms) +} + +export function convertToUserTimezoneString(dateString: string): string { + const auth = useAuthStore(); + const timezone = auth.userData.timezone; + const dateTime = DateTime.fromISO(dateString).setZone(timezone); + return dateTime.toISO(); +} + +export function convertToUserTimezoneDate(dateString: string): Date { + const auth = useAuthStore(); + const timezone = auth.userData.timezone; + const dateTime = DateTime.fromISO(dateString).setZone(timezone); + return dateTime.toJSDate(); +} + +export function convertToUTCString(dateString: string): string { + const auth = useAuthStore(); + const timezone = auth.userData.timezone; + const dateTime = DateTime.fromISO(dateString, { zone: timezone }); + return dateTime.toUTC().toISO(); +} + +export function extractTimeUTC(timeString: string) { + const [hours, minutes] = timeString.split(':').map(Number); + const dt = DateTime.now() + .set({ hour: hours, minute: minutes, second: 0, millisecond: 0 }) + .toUTC(); + return dt.toFormat("HH:mm"); +} + +export function formatTime(date: Date): string { + const luxonDate = DateTime.fromJSDate(date); + return luxonDate.toLocaleString({ hour: 'numeric', minute: 'numeric', hour12: false }); } \ No newline at end of file