export function startOfDay(d) { const x = new Date(d); x.setHours(0, 0, 0, 0); return x; } export function sameDay(a, b) { return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate(); } export function addDays(d, n) { const x = new Date(d); x.setDate(x.getDate() + n); return startOfDay(x); } /** Poniedziałek jako pierwszy dzień tygodnia (PL) */ export function startOfWeekMonday(d) { const date = startOfDay(d); const day = date.getDay(); const diff = day === 0 ? -6 : 1 - day; return addDays(date, diff); } export function startOfMonth(d) { const x = new Date(d.getFullYear(), d.getMonth(), 1); return startOfDay(x); } export function addMonths(d, n) { const x = new Date(d); x.setMonth(x.getMonth() + n); return startOfDay(x); } export function addWeeks(d, n) { return addDays(d, n * 7); } export function weekContains(weekStart, d) { const t = startOfDay(d).getTime(); const ws = weekStart.getTime(); const we = addDays(weekStart, 6).getTime(); return t >= ws && t <= we; } export function sameMonth(a, b) { return a.getMonth() === b.getMonth() && a.getFullYear() === b.getFullYear(); }