/** * Formats a Date using its local getters (not toISOString/UTC), so the * wall-clock time the server is running in is what gets stored/displayed - * never silently shifted by a UTC conversion. Used both for MySQL DATETIME * literals (events.admin.service.ts) and CSV export (csv.service.ts): same * requirement, same format, in either context. */ export const formatDatetime = (value: Date | string | null): string => { if (!value) return ''; const d = value instanceof Date ? value : new Date(value); const pad = (n: number) => String(n).padStart(2, '0'); return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`; };