The admin group-stage schedule form submitted the raw datetime-local string, which the server parsed with new Date() in the server's timezone (UTC), so an admin's local wall-clock time was stored as if it were UTC. Downstream displays then correctly converted UTC->local, shifting times by the admin's UTC offset (e.g. 7 PM PDT showed as 12 PM). Mirror the existing playoff "add-game" form: convert local->UTC on the client via localDateTimeToUtcIso into a hidden field on submit, and render the stored UTC value back into the input in the browser's local timezone via a client-only effect (avoids SSR hydration mismatch). Adds utcIsoToLocalDateTime helper (inverse of localDateTimeToUtcIso) with unit tests covering nullish/invalid input and a tz-independent round-trip. Note: matches saved before this fix must be re-saved once in admin to correct their stored values. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0125nZohVD2Cpoq3Q9f4jeds |
||
|---|---|---|
| .. | ||
| components | ||
| contexts | ||
| hooks | ||
| lib | ||
| models | ||
| routes | ||
| services | ||
| test | ||
| types | ||
| utils | ||
| welcome | ||
| app.css | ||
| entry.client.tsx | ||
| entry.server.tsx | ||
| root.tsx | ||
| routes.ts | ||