export type ParsedStart = { hour: number; minute: number; second: number }; const START_RE = /^(\d{1,2}):([0-5]\d)(?::([0-5]\d))?$/; export function parseStartTime(s?: string): ParsedStart | null { if (!s || typeof s !== "string") return null; const m = START_RE.exec(s.trim()); if (!m) return null; const hour = Number(m[1]); const minute = Number(m[2]); const second = m[3] ? Number(m[3]) : 0; if (hour < 0 || hour > 23) return null; return { hour, minute, second }; } export function parseDurationToSeconds(s?: string, fallback = 0): number { if (!s || typeof s !== "string") return fallback; const parts = s.trim().split(":").map(Number); if (parts.some((n) => Number.isNaN(n) || n < 0)) return fallback; if (parts.length === 2) { const [mm, ss] = parts; return mm * 60 + ss; } else if (parts.length === 3) { const [hh, mm, ss] = parts; return hh * 3600 + mm * 60 + ss; } return fallback; }