export function addDays(date: Date, days: number): Date { const result = new Date(date); result.setDate(result.getDate() + days); return result; } export function addMonths(date: Date, months: number): Date { const result = new Date(date); result.setMonth(result.getMonth() + months); return result; } export function addYears(date: Date, years: number): Date { const result = new Date(date); result.setFullYear(result.getFullYear() + years); return result; } export function isWeekend(date: Date): boolean { const day = date.getDay(); return day === 0 || day === 6; } export function getFirstDayOfWeek(date: Date): Date { const result = new Date(date); const day = result.getDay(); const diff = result.getDate() - day; result.setDate(diff); return result; } export function getWeekNumber( year: number, month: number, day: number ): number { const date = new Date(year, month, day); const firstDayOfYear = new Date(year, 0, 1); const pastDaysOfYear = (date.getTime() - firstDayOfYear.getTime()) / 86400000; return Math.ceil((pastDaysOfYear + firstDayOfYear.getDay() + 1) / 7); } export function isLeapYear(year: number): boolean { return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; }