Days Calculator

document.addEventListener(‘DOMContentLoaded’, function() {
const calculateBtn = document.getElementById(‘calculate-btn’);
const startDateInput = document.getElementById(‘start-date’);
const endDateInput = document.getElementById(‘end-date’);
const excludeWeekendsCheckbox = document.getElementById(‘exclude-weekends’);
const excludeHolidaysCheckbox = document.getElementById(‘exclude-holidays’);
const resultContainer = document.getElementById(‘result’);

// Set default dates (today and next week)
const today = new Date();
const nextWeek = new Date();
nextWeek.setDate(today.getDate() + 7);

startDateInput.valueAsDate = today;
endDateInput.valueAsDate = nextWeek;

calculateBtn.addEventListener(‘click’, calculateDays);

function calculateDays() {
const startDate = new Date(startDateInput.value);
const endDate = new Date(endDateInput.value);

if (!startDate || !endDate) {
alert(‘Please select both dates’);
return;
}

if (startDate > endDate) {
alert(‘End date must be after start date’);
return;
}

const excludeWeekends = excludeWeekendsCheckbox.checked;
const excludeHolidays = excludeHolidaysCheckbox.checked;

let totalDays = calculateTotalDays(startDate, endDate, excludeWeekends, excludeHolidays);

displayResult(startDate, endDate, totalDays, excludeWeekends, excludeHolidays);
}

function calculateTotalDays(startDate, endDate, excludeWeekends, excludeHolidays) {
let count = 0;
const currentDate = new Date(startDate);

// Common US holidays (simplified)
const holidays = [
’01-01′, // New Year’s Day
’07-04′, // Independence Day
’12-25′, // Christmas
’11-11′, // Veterans Day
’12-31′ // New Year’s Eve
];

while (currentDate <= endDate) { const dayOfWeek = currentDate.getDay(); const isWeekend = (dayOfWeek === 0 || dayOfWeek === 6); const monthDay = `${String(currentDate.getMonth() + 1).padStart(2, '0')}-${String(currentDate.getDate()).padStart(2, '0')}`; const isHoliday = excludeHolidays && holidays.includes(monthDay); if ((!excludeWeekends || !isWeekend) && (!excludeHolidays || !isHoliday)) { count++; } currentDate.setDate(currentDate.getDate() + 1); } return count; } function displayResult(startDate, endDate, totalDays, excludeWeekends, excludeHolidays) { const startFormatted = startDate.toLocaleDateString(); const endFormatted = endDate.toLocaleDateString(); let message = `There are ${totalDays} days between ${startFormatted} and ${endFormatted}`;

if (excludeWeekends) {
message += ” (excluding weekends)”;
}

if (excludeHolidays) {
message += excludeWeekends ? ” and holidays” : ” (excluding holidays)”;
}

resultContainer.innerHTML = message;
resultContainer.style.display = ‘block’;
}
});

Scroll to Top