From 75e533c1fcdafe31d873f48cfa35de8d21ab780e Mon Sep 17 00:00:00 2001 From: Matthias Hochmeister Date: Fri, 27 Mar 2026 07:39:25 +0100 Subject: [PATCH] update --- frontend/src/pages/Kalender.tsx | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/frontend/src/pages/Kalender.tsx b/frontend/src/pages/Kalender.tsx index daed0b5..ee6426e 100644 --- a/frontend/src/pages/Kalender.tsx +++ b/frontend/src/pages/Kalender.tsx @@ -181,6 +181,20 @@ function formatTime(isoString: string): string { return `${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}`; } +/** Extract HH:MM in LOCAL time from a UTC ISO string */ +function isoToLocalTime(iso: string | null | undefined): string { + if (!iso) return ''; + const d = new Date(iso); + return `${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}`; +} + +/** Extract YYYY-MM-DD in LOCAL time from a UTC ISO string */ +function isoToLocalDate(iso: string | null | undefined): string { + if (!iso) return ''; + const d = new Date(iso); + return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`; +} + function formatDateLong(d: Date): string { const days = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']; return `${days[d.getDay()]}, ${d.getDate()}. ${MONTH_LABELS[d.getMonth()]} ${d.getFullYear()}`; @@ -1180,7 +1194,7 @@ function VeranstaltungFormDialog({ } // Also auto-correct wiederholungBis if (wiederholungBis) { - const vonDateOnly = form.datum_von.slice(0, 10); + const vonDateOnly = isoToLocalDate(form.datum_von); if (wiederholungBis < vonDateOnly) { setWiederholungBis(vonDateOnly); } @@ -1334,9 +1348,9 @@ function VeranstaltungFormDialog({ { - const timeStr = form.datum_von?.substring(11, 16) || '00:00'; + const timeStr = isoToLocalTime(form.datum_von) || '00:00'; const d = new Date(`${isoDate}T${timeStr}:00`); if (isNaN(d.getTime())) return; handleChange('datum_von', d.toISOString()); @@ -1347,9 +1361,9 @@ function VeranstaltungFormDialog({ { - const dateStr = form.datum_von?.substring(0, 10) || new Date().toISOString().substring(0, 10); + const dateStr = isoToLocalDate(form.datum_von) || isoToLocalDate(new Date().toISOString()); const d = new Date(`${dateStr}T${e.target.value}:00`); if (!isNaN(d.getTime())) handleChange('datum_von', d.toISOString()); }} @@ -1363,9 +1377,9 @@ function VeranstaltungFormDialog({ { - const timeStr = form.datum_bis?.substring(11, 16) || '23:59'; + const timeStr = isoToLocalTime(form.datum_bis) || '23:59'; const d = new Date(`${isoDate}T${timeStr}:00`); if (isNaN(d.getTime())) return; handleChange('datum_bis', d.toISOString()); @@ -1376,9 +1390,9 @@ function VeranstaltungFormDialog({ { - const dateStr = form.datum_bis?.substring(0, 10) || new Date().toISOString().substring(0, 10); + const dateStr = isoToLocalDate(form.datum_bis) || isoToLocalDate(new Date().toISOString()); const d = new Date(`${dateStr}T${e.target.value}:00`); if (!isNaN(d.getTime())) handleChange('datum_bis', d.toISOString()); }}