근무일 계산기
날짜 범위 내 실제 근무일수 계산
근무일 계산
근무일 계산기는 무엇인가요?
근무일 계산기는 지정한 기간에서 주말과 입력한 공휴일 수를 제외해 실제로 사용할 수 있는 근무일을 세는 도구입니다. 납기 산정, 휴가 일수 확인, 급여 계산, 청구 주기, 채용 일정, 프로젝트 계획처럼 전체 달력 일수만으로는 부족한 경우에 유용합니다. 근무일은 자연일과 다릅니다. 토요일/일요일 주말, 금요일/토요일 주말, 지역 공휴일, 회사 휴무일, 대체 근무일, 반차 규칙에 따라 결과가 달라질 수 있습니다. 이 도구는 사용자가 선택한 주말 패턴과 공휴일 수를 바탕으로 빠른 계획용 결과를 제공합니다. 인사, 계약, 법적 용도로는 공식 달력과 회사 규정을 다시 확인해야 합니다.
사용 방법
사용 방법
- 시작일과 종료일을 입력하세요
- 주말 제외 옵션을 선택하세요 (토-일 / 금-토 / 없음)
- 공휴일 수를 입력하세요 (선택 사항)
- '근무일 계산'을 클릭하여 결과를 확인하세요
캘린더 가정
- 계산 전에 주말 규칙을 설정하세요. 금-토, 토-일, 주말이 없는 캘린더는 서로 다른 결과가 나옵니다.
- 공휴일과 회사 휴무일을 제외하려면 별도로 입력해야 합니다.
활용 사례
기술 원리
근무일 수는 포함 범위 `[start, end]` 내에서 주말도 공휴일도 아닌 달력 일수입니다. 양쪽 경계가 UTC 자정으로 정규화된 경우 표준 포함 끝점 공식은 `total_days = (end - start) / 86_400_000 + 1`이며, 여기서 주말과 공휴일을 뺍니다. 요일은 `Date.prototype.getDay()`에서 가져오며, 일요일은 `0`, 토요일은 `6`을 반환합니다. 주의할 점은 `getDay()`는 `getDate()`가 아니며, 결과는 브라우저의 로컬 시간대 기준이므로 UTC 날짜 문자열이 자정을 넘으면 예상과 다른 요일에 위치할 수 있습니다. 주말 패턴은 지역에 따라 다릅니다: 글로벌 기본값은 토요일-일요일(서양, 인도, 아시아 대부분)이지만, 중동은 역사적으로 목요일-금요일을 사용했고 2024년 기준 대부분의 걸프 국가(UAE, 바레인, 쿠웨이트, 카타르)는 금요일-토요일 또는 금요일 반나절이 포함된 토요일-일요일로 맞추었습니다. 이란, 아프가니스탄, 남아시아 일부는 여전히 금요일만 휴무이며, 이스라엘은 금요일-토요일입니다. 이 도구는 토-일, 금-토, 없음 세 가지 일반 프리셋을 제공하며, 공휴일 수가 나머지를 뺄셈으로 커버합니다. 계산 알고리즘 자체에는 두 가지 실용적 구현이 있습니다. 단순 반복은 하루씩 걷습니다: `for (let d = start; d <= end; d.setDate(d.getDate()+1)) if (![0,6].includes(d.getDay())) count++`. 이는 달력 일수에 대해 O(n)이며 읽기 쉽습니다. 폐쇄형 대안은 `full_weeks * 5 + partial_week_workdays`를 계산하여 O(1)로 실행되며, 이는 여러 해에 걸친 범위에서 중요합니다. 주말에 떨어지는 공휴일은 이중으로 빼면 안 되므로, 정규 패턴은 `holidays.filter(h => !isWeekend(h)).length`로 공휴일 집합을 필터링합니다. 중국의 调休(보충 근무일) 정책은 순수 주말 패턴 로직으로는 표현할 수 없는 추가 사항이 있습니다: 국무원이 매년 특정 토요일이나 일요일을 근무일로 전환하여 연장된 춘절 또는 국경일 휴가를 보상하는 목록을 발표하므로, 중국 달력의 경우 공휴일 목록과 명시적인 보충 근무일 목록을 쌍으로 구성해야 하며 요일 규칙에만 의존할 수 없습니다.
- 포함 범위 공식: `total_days = (end - start) / 86_400_000 + 1`, DST 이동을 방지하기 위해 두 날짜를 UTC 자정으로 정규화합니다.
- `Date.prototype.getDay()`는 브라우저의 로컬 시간대에서 0(일)~6(토)을 반환합니다 — UTC가 아니므로, 시간대에 민감한 코드는 `getUTCDay()`를 사용해야 합니다.
- 주말 프리셋: 토-일(서양, 인도, 아시아 대부분), 금-토(2006~2013년 이후 대부분의 걸프 국가), 금만(이란), 없음(24시간 운영).
- O(1) 폐쇄형: `full_weeks * 5 + extra_workdays_in_partial_week`; 다년 범위에서는 일별 반복보다 선호됩니다.
- 주말에 떨어지는 공휴일은 이중 계수하면 안 됩니다: 원시 공휴일 수가 아닌 `holidays.filter(h => !isWeekend(h)).length`를 뺍니다.
- 중국 국무원 调休: 특정 토요일/일요일이 연장 휴가를 보상하기 위해 법정 근무일이 됩니다; 명시적인 보충 근무일 목록이 필요합니다.
- 미국 연방 공휴일(5 U.S.C. § 6103 기준)은 달력 연도당 평균 11일을 차지합니다: 신정, 마틴 루터 킹 데이, 대통령의 날, 메모리얼 데이, 준틴스, 독립기념일, 노동절, 콜럼버스의 날, 참전용사의 날, 추수감사절, 크리스마스.
예시
2026년 한 해 평일 수
시작일: 2026-01-01
종료일: 2026-12-31
주말: 토요일 & 일요일
공휴일: 13 (중국 법정 공휴일, 调休 조정 후 기준)
전체 일수: 365
주말 일수: 104
공휴일: 13
평일: 2482주 스프린트 작업 가능량
시작일: 2026-06-15 (월요일)
종료일: 2026-06-26 (금요일)
주말: 토요일 & 일요일
공휴일: 0
전체 일수: 12
주말 일수: 2
평일: 10 (2주 스프린트 풀 가동, 개발자 4명 => 40 인일 가동량)금-토 주말을 사용하는 중동 팀
시작일: 2026-09-01
종료일: 2026-09-30
주말: 금요일 & 토요일
공휴일: 1 (지역 공휴일)
전체 일수: 30
주말 일수: 8 (9월의 금 + 토)
평일: 21공휴일 이후 온보딩 기간
시작일: 2026-10-08 (국경절 연휴 이후 첫 평일)
종료일: 2026-10-30
주말: 토요일 & 일요일
공휴일: 0
전체 일수: 23
주말 일수: 6
평일: 17 (3주 온보딩 계획에 충분한 시간)미국 연방 공휴일 기준 2027 1분기 계획
시작일: 2027-01-01
종료일: 2027-03-31
주말: 토요일 & 일요일
공휴일: 4 (New Year, MLK Day, Presidents Day, Good Friday)
전체 일수: 90
주말 일수: 26
평일: 60자주 묻는 질문
근무일은 어떻게 계산되나요?
기본적으로 월~금요일을 근무일로 보고 토·일요일은 제외합니다. 휴일 목록에 입력한 공휴일도 함께 제외됩니다. 페이지에는 전체 달력일, 주말 일수, 휴일 일수, 그리고 최종 근무일 수가 표시됩니다.
공휴일이 자동으로 적용되나요?
아니요. 본 계산기는 공휴일을 자동으로 불러오지 않습니다. 휴일 일수를 직접 입력해야 합니다. 정확한 일수는 해당 국가의 공식 달력을 확인하세요.
대체 근무일(중국의 调休 등)도 처리하나요?
아니요. 본 계산기는 주말과 입력한 휴일 일수만 제외합니다. 중국의 调休(대체 근무) 같은 정책은 자동 처리하지 않으므로, 일정에 대체 근무일이 포함된다면 주말 규칙이나 휴일 일수를 직접 조정하세요.
주말만 제외하고 휴일은 빼지 않을 수 있나요?
네. 휴일 목록을 끄면 토·일요일만 제외하고 계산합니다. 또한 주말로 처리할 요일을 직접 지정할 수도 있어, 금~토를 주말로 쓰는 일부 중동 일정에도 대응할 수 있습니다.
이 도구와 날짜 차이 도구는 어떻게 다른가요?
날짜 차이 도구는 달력일 수를 반환하고, 이 도구는 주말과 휴일을 뺀 근무일 수를 반환합니다. 프로젝트 마감, 계약 일자, SLA 기간에는 이 도구를, 단순 경과 시간에는 날짜 차이 도구를 사용하세요.
과거 날짜에도 사용할 수 있나요?
네. 과거든 미래든 두 날짜 사이의 근무일을 계산할 수 있습니다. 시작일과 종료일을 입력하고 주말 규칙과 휴일 일수를 지정하면 해당 기간의 총 근무일이 계산됩니다.
내 데이터가 업로드되나요?
아니요. 계산은 브라우저에서 이루어집니다. 휴일 일수와 날짜는 저장되거나 전송되지 않습니다.