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')}`;
|
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());
|
||||||
}}
|
}}
|
||||||
|
|||||||
Reference in New Issue
Block a user