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')}`;
}
/** 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({
<GermanDateField
label="Von"
mode="date"
value={form.datum_von}
value={isoToLocalDate(form.datum_von)}
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`);
if (isNaN(d.getTime())) return;
handleChange('datum_von', d.toISOString());
@@ -1347,9 +1361,9 @@ function VeranstaltungFormDialog({
<TextField
label="Uhrzeit"
type="time"
value={form.datum_von?.substring(11, 16) || ''}
value={isoToLocalTime(form.datum_von)}
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`);
if (!isNaN(d.getTime())) handleChange('datum_von', d.toISOString());
}}
@@ -1363,9 +1377,9 @@ function VeranstaltungFormDialog({
<GermanDateField
label="Bis"
mode="date"
value={form.datum_bis}
value={isoToLocalDate(form.datum_bis)}
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`);
if (isNaN(d.getTime())) return;
handleChange('datum_bis', d.toISOString());
@@ -1376,9 +1390,9 @@ function VeranstaltungFormDialog({
<TextField
label="Uhrzeit"
type="time"
value={form.datum_bis?.substring(11, 16) || ''}
value={isoToLocalTime(form.datum_bis)}
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`);
if (!isNaN(d.getTime())) handleChange('datum_bis', d.toISOString());
}}