Calcola "oggi" nel fuso di Roma ovunque, invece di UTC o del fuso del processo.
serieConsecutiva()/serieConferme() calcolavano oggi con new Date().toISOString() (sempre UTC), mentre contaPresenzeGiocatore() usava dataOggi() con i getter locali di Date (corretti solo se il processo gira già in fuso italiano — falso su un server SSR in UTC). Le due statistiche potevano non essere d'accordo su cosa fosse "oggi" nelle prime ore della giornata italiana. dataOggi() ora usa Intl.DateTimeFormat con timeZone: "Europe/Rome": il cambio ora legale/solare lo gestisce il database IANA dei fusi, non un offset scritto a mano. Le funzioni di serie in presenze.ts usano lo stesso dataOggi() invece di un oggiIso() locale, così tutte le statistiche restano coerenti fra loro. Aggiunti test che dimostrano il fix con istanti reali a cavallo di mezzanotte sia in CET che in CEST, per provare che lo scarto segue davvero il fuso e non un offset fisso. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -23,9 +23,23 @@ const evento = (id: string, data: string, tipo: Evento["tipo"]): Evento => ({
|
||||
pagelleChiuse: false,
|
||||
});
|
||||
|
||||
// --- dataOggi ----------------------------------------------------------------
|
||||
// --- dataOggi ------------------------------------------------------------------
|
||||
assert.match(dataOggi(), /^\d{4}-\d{2}-\d{2}$/);
|
||||
assert.equal(dataOggi(), new Date().toLocaleDateString("sv-SE"), "data locale, non UTC");
|
||||
// CET (gennaio, UTC+1): dopo le 23:00 UTC del 15, a Roma è già il 16. L'ISO in UTC
|
||||
// direbbe ancora 15: se `dataOggi()` tornasse a farlo, questo test lo scoprirebbe.
|
||||
assert.equal(
|
||||
dataOggi(new Date("2026-01-15T23:30:00Z")),
|
||||
"2026-01-16",
|
||||
"CET: mezzanotte italiana precede quella UTC di un'ora",
|
||||
);
|
||||
// CEST (luglio, UTC+2): lo scarto raddoppia, la mezzanotte italiana anticipa quella UTC
|
||||
// di due ore. Se il calcolo usasse un offset fisso invece del fuso Europe/Rome, questo
|
||||
// secondo caso lo tradirebbe anche se il primo passasse per caso.
|
||||
assert.equal(
|
||||
dataOggi(new Date("2026-07-15T22:30:00Z")),
|
||||
"2026-07-16",
|
||||
"CEST: il cambio ora legale porta lo scarto a due ore, non resta fisso a uno",
|
||||
);
|
||||
|
||||
// --- partitaDiOggi -----------------------------------------------------------
|
||||
const eventi = [
|
||||
|
||||
Reference in New Issue
Block a user