export const DAY = 86_400_000; export function dateIndex(date: string) { if (!/^\d{4}-\d{2}-\d{2}$/.test(date)) return NaN; const timestamp = Date.parse(`${date}T00:00:00Z`); return Number.isFinite(timestamp) && new Date(timestamp).toISOString().slice(0, 10) === date ? timestamp / DAY : NaN; } export const indexDate = (index: number) => new Date(index * DAY).toISOString().slice(0, 10); export const addDays = (date: string, days: number) => indexDate(dateIndex(date) + days); export function timestampDate(value: unknown) { if (typeof value !== "number" || !Number.isFinite(value)) return ""; const date = new Date(value); if (!Number.isFinite(date.getTime())) return ""; return `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`; } export const todayDate = () => timestampDate(Date.now()); export const dateTimestamp = (date: string, end = false) => Number.isFinite(dateIndex(date)) ? new Date(`${date}T${end ? "23:59:59.999" : "00:00:00"}`).getTime() : null;