This commit is contained in:
Matthias Hochmeister
2026-03-27 07:39:25 +01:00
parent 03f489d546
commit 75e533c1fc

View File

@@ -181,6 +181,20 @@ function formatTime(isoString: string): string {
return `${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}`; 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 { function formatDateLong(d: Date): string {
const days = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']; const days = ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'];
return `${days[d.getDay()]}, ${d.getDate()}. ${MONTH_LABELS[d.getMonth()]} ${d.getFullYear()}`; return `${days[d.getDay()]}, ${d.getDate()}. ${MONTH_LABELS[d.getMonth()]} ${d.getFullYear()}`;
@@ -1180,7 +1194,7 @@ function VeranstaltungFormDialog({
} }
// Also auto-correct wiederholungBis // Also auto-correct wiederholungBis
if (wiederholungBis) { if (wiederholungBis) {
const vonDateOnly = form.datum_von.slice(0, 10); const vonDateOnly = isoToLocalDate(form.datum_von);
if (wiederholungBis < vonDateOnly) { if (wiederholungBis < vonDateOnly) {
setWiederholungBis(vonDateOnly); setWiederholungBis(vonDateOnly);
} }
@@ -1334,9 +1348,9 @@ function VeranstaltungFormDialog({
<GermanDateField <GermanDateField
label="Von" label="Von"
mode="date" mode="date"
value={form.datum_von} value={isoToLocalDate(form.datum_von)}
onChange={(isoDate) => { onChange={(isoDate) => {
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`); const d = new Date(`${isoDate}T${timeStr}:00`);
if (isNaN(d.getTime())) return; if (isNaN(d.getTime())) return;
handleChange('datum_von', d.toISOString()); handleChange('datum_von', d.toISOString());
@@ -1347,9 +1361,9 @@ function VeranstaltungFormDialog({
<TextField <TextField
label="Uhrzeit" label="Uhrzeit"
type="time" type="time"
value={form.datum_von?.substring(11, 16) || ''} value={isoToLocalTime(form.datum_von)}
onChange={(e) => { onChange={(e) => {
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`); const d = new Date(`${dateStr}T${e.target.value}:00`);
if (!isNaN(d.getTime())) handleChange('datum_von', d.toISOString()); if (!isNaN(d.getTime())) handleChange('datum_von', d.toISOString());
}} }}
@@ -1363,9 +1377,9 @@ function VeranstaltungFormDialog({
<GermanDateField <GermanDateField
label="Bis" label="Bis"
mode="date" mode="date"
value={form.datum_bis} value={isoToLocalDate(form.datum_bis)}
onChange={(isoDate) => { onChange={(isoDate) => {
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`); const d = new Date(`${isoDate}T${timeStr}:00`);
if (isNaN(d.getTime())) return; if (isNaN(d.getTime())) return;
handleChange('datum_bis', d.toISOString()); handleChange('datum_bis', d.toISOString());
@@ -1376,9 +1390,9 @@ function VeranstaltungFormDialog({
<TextField <TextField
label="Uhrzeit" label="Uhrzeit"
type="time" type="time"
value={form.datum_bis?.substring(11, 16) || ''} value={isoToLocalTime(form.datum_bis)}
onChange={(e) => { onChange={(e) => {
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`); const d = new Date(`${dateStr}T${e.target.value}:00`);
if (!isNaN(d.getTime())) handleChange('datum_bis', d.toISOString()); if (!isNaN(d.getTime())) handleChange('datum_bis', d.toISOString());
}} }}