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;
};