diff --git a/web-dashboard/index.html b/web-dashboard/index.html index d92e066..8f6cf22 100644 --- a/web-dashboard/index.html +++ b/web-dashboard/index.html @@ -1215,6 +1215,17 @@ return new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(n || 0); } + // Formatiert nur den Kalendertag eines ISO-Datums (YYYY-MM-DD-Präfix), + // ohne über `new Date(iso).toLocaleDateString()` zu gehen — das würde je + // nach Browser-Zeitzone auf den Vor-/Folgetag verschieben, wenn das + // Backend den Zeitpunkt nahe Mitternacht UTC serialisiert (z.B. + // Fälligkeitsdatum, das serverseitig auf 23:59:59 UTC gesetzt ist). + function formatIsoDateOnly(iso) { + if (!iso) return ''; + const [year, month, day] = iso.slice(0, 10).split('-'); + return `${day}.${month}.${year}`; + } + function el(tag, className, html) { const e = document.createElement(tag); if (className) e.className = className; @@ -1771,7 +1782,7 @@ if (light.dueDate) { const dueDateRow = el('div', 'amount-row'); dueDateRow.appendChild(el('span', 'label', 'Fälligkeitsdatum')); - dueDateRow.appendChild(el('span', 'value', new Date(light.dueDate).toLocaleDateString('de-DE'))); + dueDateRow.appendChild(el('span', 'value', formatIsoDateOnly(light.dueDate))); card.appendChild(dueDateRow); }