From 33881db9e13f6ba40bff6193f1c9133a0d287f7d Mon Sep 17 00:00:00 2001 From: bernd Date: Thu, 13 Aug 2026 17:48:55 +0000 Subject: [PATCH] =?UTF-8?q?F=C3=A4lligkeitsdatum-Anzeige=20zeitzonenunabh?= =?UTF-8?q?=C3=A4ngig=20formatieren?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web-dashboard/index.html | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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); }