import { MS_PER_DAY, DayKey, DAY_KEYS } from "../types/timesheet.types"; export function toUTCDateOnly(date: Date | string): Date { const d = new Date(date); return new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())); } export function addDays(date:Date, days: number): Date { return new Date(date.getTime() + days * MS_PER_DAY); } export function endOfDayUTC(date: Date | string): Date { const d = toUTCDateOnly(date); return new Date(d.getTime() + MS_PER_DAY - 1); } export function isBetweenUTC(date: Date, start: Date, end_inclusive: Date): boolean { const time = date.getTime(); return time >= start.getTime() && time <= end_inclusive.getTime(); } export function toTimeString(date: Date): string { const hours = String(date.getUTCHours()).padStart(2,'0'); const minutes = String(date.getUTCMinutes()).padStart(2,'0'); return `${hours}:${minutes}`; } export function round2(num: number) { return Math.round(num * 100) / 100; } export function shortDate(date:Date): string { const mm = String(date.getUTCMonth()+1).padStart(2,'0'); const dd = String(date.getUTCDate()).padStart(2,'0'); return `${mm}/${dd}`; } export function dayKeyFromDate(date: Date, useUTC = true): DayKey { const index = useUTC ? date.getUTCDay() : date.getDay(); // 0=Sunday..6=Saturday return DAY_KEYS[index]; } export const toHHmm = (date: Date) => date.toISOString().slice(11, 16); //create shifts within timesheet's week - employee overview functions export function parseISODate(iso: string): Date { const [ y, m, d ] = iso.split('-').map(Number); return new Date(y, (m ?? 1) - 1, d ?? 1); } export function parseHHmm(t: string): Date { const [ hh, mm ] = t.split(':').map(Number); return new Date(1970, 0, 1, hh || 0, mm || 0, 0, 0); }