vkashti / utils / dateUtils.ts
dateUtils.ts
Raw
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;
};