function parseLocalDate(dateStr: string): Date | null { const [year, month, day] = dateStr.split('-'); if (!year || !month || !day) return null; return new Date(Number(year), Number(month) - 1, Number(day), 12, 0, 0); } function formatLocalDate(date: Date): string { const y = date.getFullYear(); const m = String(date.getMonth() + 1).padStart(2, '0'); const d = String(date.getDate()).padStart(2, '0'); return `${y}-${m}-${d}`; } export const syncDateWithURL = (date: Date | null) => { const params = new URLSearchParams(window.location.search); if (date) { params.set('date', formatLocalDate(date)); } else { params.delete('date'); } window.history.replaceState({}, '', `${window.location.pathname}?${params}`); }; export const getDateFromURL = (): Date | null => { const params = new URLSearchParams(window.location.search); const dateStr = params.get('date'); if (!dateStr) return null; const parsed = parseLocalDate(dateStr); return parsed && !isNaN(parsed.getTime()) ? parsed : null; };