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 { mkdtempSync, rmSync } from "node:fs";
|
||||||
import { tmpdir } from "node:os";
|
import { tmpdir } from "node:os";
|
||||||
import { join } from "node:path";
|
import { join } from "node:path";
|
||||||
|
import { tagLokal } from "./helfer-zeit.mjs";
|
||||||
import { eigenerPort } from "./helfer-port.mjs";
|
import { eigenerPort } from "./helfer-port.mjs";
|
||||||
import { notbremse } from "./helfer-notbremse.mjs";
|
import { notbremse } from "./helfer-notbremse.mjs";
|
||||||
|
|
||||||
@@ -83,7 +84,13 @@ const einf = (titel, kanal, wannTage) => d.prepare(
|
|||||||
+ " datum, quelle_kanal, erstellt_von, erstellt)"
|
+ " datum, quelle_kanal, erstellt_von, erstellt)"
|
||||||
+ " VALUES (?,?,?,?,?,?,?,?,?,?)")
|
+ " VALUES (?,?,?,?,?,?,?,?,?,?)")
|
||||||
.run("highlight", "clip", titel, "", "offen", "mittel",
|
.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());
|
vorTagen(wannTage).toISOString());
|
||||||
|
|
||||||
einf("Heute DogFather", "dogfather", 0);
|
einf("Heute DogFather", "dogfather", 0);
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
import { mkdtempSync, rmSync } from "node:fs";
|
import { mkdtempSync, rmSync } from "node:fs";
|
||||||
import { tmpdir } from "node:os";
|
import { tmpdir } from "node:os";
|
||||||
import { join } from "node:path";
|
import { join } from "node:path";
|
||||||
|
import { tagLokal } from "./helfer-zeit.mjs";
|
||||||
import { eigenerPort } from "./helfer-port.mjs";
|
import { eigenerPort } from "./helfer-port.mjs";
|
||||||
import { notbremse } from "./helfer-notbremse.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)"
|
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());
|
+ " VALUES (?,?,?,?,?,1,?)").run("Filipe", "admin", hash, salt, 32768, new Date().toISOString());
|
||||||
|
|
||||||
const tagPlus = (n) => {
|
/* DER HAUSSCHLUESSEL STATT EIGENER RECHNUNG (20.09.2026).
|
||||||
const x = new Date();
|
|
||||||
x.setHours(12, 0, 0, 0);
|
Hier stand `x.setHours(12,...)` und danach `toISOString().slice(0,10)`.
|
||||||
x.setDate(x.getDate() + n);
|
Das ist RICHTIG -- die Verankerung um zwoelf Uhr sorgt dafuer, dass
|
||||||
return x.toISOString().slice(0, 10);
|
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
|
/* Eine Aktion über fünf Tage, die GESTERN angefangen hat — genau der
|
||||||
Fall, den der Server vorher verschluckt hat. */
|
Fall, den der Server vorher verschluckt hat. */
|
||||||
const LAUF_START = tagPlus(-1), LAUF_ENDE = tagPlus(3);
|
const LAUF_START = tagPlus(-1), LAUF_ENDE = tagPlus(3);
|
||||||
|
|||||||
Reference in New Issue
Block a user