function getRandomArbitrary(min, max) { return Math.floor(Math.random() * (++max - min) + min); } function formatDate(date) { const day = String(date.getDate()).padStart(2, '0'); const month = date.toLocaleString('default', { month: 'short' }); const year = date.getFullYear(); return `${day}/${month}/${year}`; } const generateWorkSchedule = (year) => { const schedule = []; const daysInYear = (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0 ? 366 : 365; const startDate = new Date(year, 0, 1); let week = []; for (let i = 0; i < daysInYear; i++) { const currentDate = new Date(startDate); currentDate.setDate(startDate.getDate() + i); const dayOfWeek = currentDate.getDay(); if (dayOfWeek === 0 || dayOfWeek === 6) continue; // Skip Saturdays and Sundays const entryHour = getRandomArbitrary(7, 8); // Random hour between 7 and 8 const entryMinute = entryHour === 7 ? getRandomArbitrary(30, 60) : getRandomArbitrary(0, 20); const exitHour = getRandomArbitrary(17, 18); // Random hour between 17 and 18 const exitMinute = getRandomArbitrary(10, 60); const entryTime = new Date(currentDate); entryTime.setHours(entryHour, entryMinute); const exitTime = new Date(currentDate); exitTime.setHours(exitHour, exitMinute); week.push({ date: formatDate(currentDate), entry: entryTime.toTimeString().split(' ')[0], exit: exitTime.toTimeString().split(' ')[0], }); if (dayOfWeek === 5) { // End of the week (Friday) schedule.push(week); week = []; } } if (week.length > 0) { schedule.push(week); // Push the last week if it has any days } return schedule; }; console.table([ ...generateWorkSchedule(2025)[0], ...generateWorkSchedule(2025)[1], ...generateWorkSchedule(2025)[2], ...generateWorkSchedule(2025)[3], ]);