diff --git a/public/script.js b/public/script.js index 45a2850..48a3de4 100644 --- a/public/script.js +++ b/public/script.js @@ -601,9 +601,16 @@ async function loadSchaltungen() { } } +// Format any ISO-like date string (YYYY-MM-DD or full timestamp) as DD.MM.YYYY +// with leading zeros. Returns the original string unchanged if it cannot be parsed. function formatDate(dateString) { + if (!dateString) return ''; const date = new Date(dateString); - return date.toLocaleDateString('de-DE'); + if (isNaN(date.getTime())) return String(dateString); + const dd = String(date.getDate()).padStart(2, '0'); + const mm = String(date.getMonth() + 1).padStart(2, '0'); + const yyyy = date.getFullYear(); + return `${dd}.${mm}.${yyyy}`; } async function showDocuments(schaltungId) { @@ -848,7 +855,7 @@ async function loadAnbieterAdmin() { } anbieter.forEach(a => { - const createdAt = new Date(a.created_at).toLocaleDateString('de-DE'); + const createdAt = formatDate(a.created_at); const tr = document.createElement('tr'); tr.innerHTML = ` ${a.id} @@ -1844,8 +1851,15 @@ async function loadGeloeschteSchaltungen() { } function formatDateTime(dateTimeString) { - const date = new Date(dateTimeString); - return date.toLocaleDateString('de-DE') + ' ' + date.toLocaleTimeString('de-DE', {hour: '2-digit', minute: '2-digit'}); + if (!dateTimeString) return ''; + const d = new Date(dateTimeString); + if (isNaN(d.getTime())) return String(dateTimeString); + const dd = String(d.getDate()).padStart(2, '0'); + const mm = String(d.getMonth() + 1).padStart(2, '0'); + const yyyy = d.getFullYear(); + const HH = String(d.getHours()).padStart(2, '0'); + const MM = String(d.getMinutes()).padStart(2, '0'); + return `${dd}.${mm}.${yyyy} ${HH}:${MM}`; } // Filter functionality @@ -3096,7 +3110,7 @@ async function loadMitarbeiterProzentsaetzeAdmin() {
${escapeHtml(String(p.prozentsatz))}% ${p.beschreibung ? `- ${escapeHtml(p.beschreibung)}` : ''} -
Gültig ab: ${escapeHtml(p.gueltig_ab)} +
Gültig ab: ${escapeHtml(formatDate(p.gueltig_ab))}