update
This commit is contained in:
@@ -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());
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user