import {isValidIso, parseDisplayToIso} from './dateFormat' const DATETIME_RE = /^(\d{4}-\d{2}-\d{2})T(\d{2}):(\d{2}):(\d{2})$/ export function isValidIsoDateTime(s: string): boolean { const m = DATETIME_RE.exec(s) if (!m) return false const [, date, hh, mm, ss] = m if (!isValidIso(date)) return false const h = Number(hh) const min = Number(mm) const sec = Number(ss) return h >= 0 && h <= 23 && min >= 0 && min <= 59 && sec >= 0 && sec <= 59 } export function formatIsoDateTimeToDisplay(s: string | null): string { if (!s || !isValidIsoDateTime(s)) return '' const [date, time] = s.split('T') const [y, mo, d] = date.split('-') const [hh, mm] = time.split(':') return `${d}/${mo}/${y} ${hh}:${mm}` } export function splitDateTime(s: string | null): {date: string | null; time: string} { if (!s || !isValidIsoDateTime(s)) return {date: null, time: ''} const [date, time] = s.split('T') return {date, time: time.slice(0, 5)} } export function parseDisplayToIsoDateTime(display: string): string | null { const match = /^(\d{2}\/\d{2}\/\d{4}) (\d{2}):(\d{2})$/.exec(display.trim()) if (!match) return null const [, datePart, hh, mm] = match const iso = parseDisplayToIso(datePart) if (!iso) return null if (Number(hh) > 23 || Number(mm) > 59) return null return `${iso}T${hh}:${mm}:00` } export function composeDateTime(date: string, time: string): string { const t = time || '00:00' return `${date}T${t}:00` }