export function isSameDate(date1: Date, date2: Date): boolean { return ( date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth() && date1.getDate() === date2.getDate() ); } export function isDateBefore(date1: Date, date2: Date): boolean { return date1.getTime() < date2.getTime(); } export function isDateAfter(date1: Date, date2: Date): boolean { return date1.getTime() > date2.getTime(); } export function isDateBetween(date: Date, start: Date, end: Date): boolean { const time = date.getTime(); return time >= start.getTime() && time <= end.getTime(); } export function normalizeDate(date: Date): Date { return new Date(date.getFullYear(), date.getMonth(), date.getDate()); } export function isValidDate(date: any): date is Date { return date instanceof Date && !isNaN(date.getTime()); }