/* WELCHER TAG IST HEUTE? — für Prüfungen. DER FEHLER, DEN DAS VERHINDERT, gefunden am 06.09.2026 um 00:10. Der Gesamtlauf meldete plötzlich 13 Fehlschläge in pruef-teilnehmer.mjs -- an einer Datei, die seit Stunden niemand angefasst hatte. "der alte Termin ist da: FEHL", "sein Teilnehmer wurde uebernommen: LEER". Es sah aus, als sei die Teilnehmerfunktion kaputt. Sie war es nicht. Es war zehn nach Mitternacht. Ortszeit (MESZ): 06.09.2026, 00:10 UTC: 05.09.2026, 22:10 Die Prüfung bildete ihr Datum mit `new Date().toISOString().slice(0, 10)` -- das ist UTC und ergab den 5. September. Die Anwendung rechnet den Tag dagegen LOKAL (heuteLokal() in workspace.js) und suchte am 6. Die Prüfung legte ihre Termine also auf gestern und wunderte sich, dass sie heute keine fand. ZWEI STUNDEN AM TAG war diese Prüfung damit rot -- zwischen Mitternacht und zwei Uhr, im Winter eine Stunde. Wer nur tagsüber läuft, sieht das nie; wer nachts arbeitet, sucht stundenlang an der falschen Stelle. Dieselbe Sorte Fehler wie die Layout-Messung, die je nach Serverlaune anschlug: Ein Ergebnis, das von der Uhrzeit abhängt, ist kein Ergebnis. Deshalb gibt es das hier EINMAL statt viermal in Kopie. Die Rechenweise ist bewusst dieselbe wie in workspace.js -- eine Prüfung, die den Tag anders bestimmt als die Anwendung, prüft nicht die Anwendung, sondern sich selbst. ===================================================================== */ /** Der heutige Tag in ORTSZEIT, als "JJJJ-MM-TT". */ export function heuteLokal() { const d = new Date(); const p = (n) => String(n).padStart(2, "0"); return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`; } /** Derselbe Tag, um n Tage verschoben (negativ = in der Vergangenheit). * * Gerechnet wird über die Millisekunden und danach lokal ausgelesen. * `setDate(getDate() + n)` täte es auch, hat aber an den zwei * Umstellungstagen im Jahr seine Tücken. */ export function tagLokal(versatz) { const d = new Date(Date.now() + versatz * 86400_000); const p = (n) => String(n).padStart(2, "0"); return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}`; }