Holidays

Italy Public Holidays Calculator

Italy's nationwide public holidays for any year, calculated live from the actual rules.

The patron saint day nobody outside Italy expects

On top of every national holiday shown here, every single Italian city and town observes an extra day off for its own patron saint's feast day — Milan stops for Sant'Ambrogio (December 7), Rome for Santi Pietro e Paolo (June 29), Naples for San Gennaro (September 19), and so on. It's a genuinely local holiday, different in every city, layered on top of the identical national calendar everywhere else.

Ferragosto: a holiday that effectively swallows a whole week

August 15th (Assumption of Mary, known colloquially as Ferragosto) is the one national holiday where, in practice, much of the country treats it as the center of a broader summer shutdown — many businesses close for a week or more around it, well beyond the single official public holiday date.

Related

Related tools

function computeEaster(year){ const a = year % 19; const b = Math.floor(year/100); const c = year % 100; const d = Math.floor(b/4); const e = b % 4; const f = Math.floor((b+8)/25); const g = Math.floor((b-f+1)/3); const h = (19*a + b - d - g + 15) % 30; const i = Math.floor(c/4); const k = c % 4; const l = (32 + 2*e + 2*i - h - k) % 7; const m = Math.floor((a + 11*h + 22*l)/451); const month = Math.floor((h + l - 7*m + 114)/31); const day = ((h + l - 7*m + 114) % 31) + 1; return new Date(Date.UTC(year, month-1, day)); } function italyHolidays(year){ const easter = computeEaster(year); const easterMonday = new Date(easter); easterMonday.setUTCDate(easter.getUTCDate()+1); const raw = [ ['New Year\'s Day', new Date(Date.UTC(year,0,1))], ['Epiphany', new Date(Date.UTC(year,0,6))], ['Easter Monday (Pasquetta)', easterMonday], ['Liberation Day', new Date(Date.UTC(year,3,25))], ['Labour Day', new Date(Date.UTC(year,4,1))], ['Republic Day', new Date(Date.UTC(year,5,2))], ['Assumption of Mary (Ferragosto)', new Date(Date.UTC(year,7,15))], ['All Saints\' Day', new Date(Date.UTC(year,10,1))], ['Immaculate Conception', new Date(Date.UTC(year,11,8))], ['Christmas Day', new Date(Date.UTC(year,11,25))], ['St Stephen\'s Day', new Date(Date.UTC(year,11,26))], ]; return raw.map(([name,date]) => ({name, date})); } const now = new Date(); for(let y = now.getFullYear()-1; y <= now.getFullYear()+3; y++){ const opt = document.createElement('option'); opt.value = y; opt.textContent = y; if(y === now.getFullYear()) opt.selected = true; document.getElementById('hlYear').appendChild(opt); } const yearSelect = document.getElementById('hlYear'); const table = document.getElementById('hlTable'); function fmt(d){ return d.toLocaleDateString('en-US',{weekday:'short', month:'long', day:'numeric'}); } function render(){ const year = parseInt(yearSelect.value,10); const rows = italyHolidays(year); table.innerHTML = rows.map(r => `
${r.name}${fmt(r.date)}
`).join(''); } yearSelect.addEventListener('change', render); render();