Holidays

Poland Public Holidays Calculator

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

One of Europe's more Easter-dependent calendars

Poland ties three separate holidays to the Easter calculation — Easter Monday, Corpus Christi, and (indirectly, since it's exactly 7 weeks after Easter) Pentecost's related observances — more than most European countries on this site, which makes the Easter Date Calculator especially relevant for planning around the Polish calendar specifically.

No substitute-day rule

Like France and Spain, Poland has no standard nationwide rule shifting a holiday that falls on a weekend to a weekday — if a fixed holiday lands on a Saturday or Sunday, it's simply absorbed into the weekend with no compensating day added, making some years noticeably more generous with actual days off than others purely by chance of the calendar.

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 polandHolidays(year){ const easter = computeEaster(year); const easterMonday = new Date(easter); easterMonday.setUTCDate(easter.getUTCDate()+1); const corpusChristi = new Date(easter); corpusChristi.setUTCDate(easter.getUTCDate()+60); const raw = [ ['New Year\'s Day', new Date(Date.UTC(year,0,1))], ['Epiphany', new Date(Date.UTC(year,0,6))], ['Easter Monday', easterMonday], ['Labour Day', new Date(Date.UTC(year,4,1))], ['Constitution Day', new Date(Date.UTC(year,4,3))], ['Corpus Christi', corpusChristi], ['Assumption of Mary / Armed Forces Day', new Date(Date.UTC(year,7,15))], ['All Saints\' Day', new Date(Date.UTC(year,10,1))], ['Independence Day', new Date(Date.UTC(year,10,11))], ['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 = polandHolidays(year); table.innerHTML = rows.map(r => `
${r.name}${fmt(r.date)}
`).join(''); } yearSelect.addEventListener('change', render); render();