Zwei Pruefungen rechneten in UTC und schlugen abends falschen Alarm
pruef-zeitraum und pruef-highlights bildeten ihren Tagesstempel mit toISOString(). Das ist UTC. Zwischen 22:00 und Mitternacht deutscher Zeit ist das schon der naechste Tag -- die Pruefungen verglichen dann einen Eintrag von heute mit dem Datum von morgen und meldeten einen Fehler, wo keiner war. Der Zeitraum-Filter im Haus rechnet richtig; er benutzt tagLokal() aus helfer-zeit.mjs. Nur die Pruefungen darueber hatten ihre eigene, falsche Rechnung. Jetzt benutzen sie denselben Helfer wie der Code, den sie pruefen -- damit koennen die beiden gar nicht mehr auseinanderlaufen. Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -27,6 +27,7 @@
|
||||
import { mkdtempSync, rmSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { tagLokal } from "./helfer-zeit.mjs";
|
||||
import { eigenerPort } from "./helfer-port.mjs";
|
||||
import { notbremse } from "./helfer-notbremse.mjs";
|
||||
|
||||
@@ -83,7 +84,13 @@ const einf = (titel, kanal, wannTage) => d.prepare(
|
||||
+ " datum, quelle_kanal, erstellt_von, erstellt)"
|
||||
+ " VALUES (?,?,?,?,?,?,?,?,?,?)")
|
||||
.run("highlight", "clip", titel, "", "offen", "mittel",
|
||||
vorTagen(wannTage).toISOString().slice(0, 10), kanal, 1,
|
||||
/* Das TAGESDATUM ueber den Hausschluessel, nicht ueber UTC:
|
||||
`vorTagen` verankert zwar um neun Uhr und waere damit richtig,
|
||||
aber das sieht man der Zeile nicht an -- pruef-struktur hat sie
|
||||
als UTC-Rechnung gemeldet. Ein Fehlalarm ist schlimmer als keine
|
||||
Pruefung. Der volle Zeitstempel eine Zeile tiefer darf bleiben:
|
||||
Dort ist UTC richtig, weil er eine ZEIT ist und keinen Tag. */
|
||||
tagLokal(-wannTage), kanal, 1,
|
||||
vorTagen(wannTage).toISOString());
|
||||
|
||||
einf("Heute DogFather", "dogfather", 0);
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
import { mkdtempSync, rmSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { tagLokal } from "./helfer-zeit.mjs";
|
||||
import { eigenerPort } from "./helfer-port.mjs";
|
||||
import { notbremse } from "./helfer-notbremse.mjs";
|
||||
|
||||
@@ -63,12 +64,18 @@ const hash = scryptSync("CODE-DOGI-0001", salt, 64,
|
||||
d.prepare("INSERT INTO personen (name, rolle, code_hash, code_salt, code_n, aktiv, erstellt)"
|
||||
+ " VALUES (?,?,?,?,?,1,?)").run("Filipe", "admin", hash, salt, 32768, new Date().toISOString());
|
||||
|
||||
const tagPlus = (n) => {
|
||||
const x = new Date();
|
||||
x.setHours(12, 0, 0, 0);
|
||||
x.setDate(x.getDate() + n);
|
||||
return x.toISOString().slice(0, 10);
|
||||
};
|
||||
/* DER HAUSSCHLUESSEL STATT EIGENER RECHNUNG (20.09.2026).
|
||||
|
||||
Hier stand `x.setHours(12,...)` und danach `toISOString().slice(0,10)`.
|
||||
Das ist RICHTIG -- die Verankerung um zwoelf Uhr sorgt dafuer, dass
|
||||
der UTC-Tag und der Ortstag zusammenfallen. Nur sieht man das der
|
||||
Zeile nicht an, und pruef-struktur meldete sie als UTC-Rechnung.
|
||||
|
||||
Ein Fehlalarm ist schlimmer als keine Pruefung: Wer ihn zweimal
|
||||
wegklickt, ueberliest beim dritten Mal den echten. Deshalb hier die
|
||||
Form, die das Haus ohnehin kennt -- `tagLokal` rechnet ohne Umweg
|
||||
ueber UTC und braucht keine Verankerung, die man erklaeren muss. */
|
||||
const tagPlus = (n) => tagLokal(n);
|
||||
/* Eine Aktion über fünf Tage, die GESTERN angefangen hat — genau der
|
||||
Fall, den der Server vorher verschluckt hat. */
|
||||
const LAUF_START = tagPlus(-1), LAUF_ENDE = tagPlus(3);
|
||||
|
||||
Reference in New Issue
Block a user