날짜가감 계산기
지정 날짜에서 일수, 주수, 월수, 연수가감
날짜에서 일수가감
날짜가감 계산기는 무엇인가요?
날짜 가감 계산기는 시작 날짜를 기준으로 일, 주, 월, 년을 더하거나 빼서 목표 날짜를 찾는 도구입니다. 계약 갱신일, 후속 연락일, 보증 만료일, 알림 날짜, 프로젝트 일정처럼 손으로 달력을 세기 번거로운 경우에 유용합니다. 날짜 계산에서 어려운 부분은 단순히 숫자를 더하는 것이 아니라 실제 달력의 경계를 처리하는 것입니다. 월마다 날짜 수가 다르고, 윤년은 2월에 영향을 주며, 1월 31일에 1개월을 더했을 때 같은 날짜가 존재하지 않을 수도 있습니다. 이 도구는 빠른 일정 검토에 적합하지만, 영업일, 공휴일, 대체 근무일, 법적 마감 규칙은 별도로 확인해야 합니다.
사용 방법
사용 방법
- 시작 날짜를 입력하세요
- 더하기(미래) 또는 빼기(과거)를 선택하세요
- 값을 입력하고 단위(일/주/월/년)를 선택하세요
- '결과 계산'을 클릭하면 대상 날짜가 표시됩니다
날짜 규칙
- 월/년 계산은 더 짧은 달에 도달할 수 있습니다. 예를 들어 1월 31일에 한 달을 더할 때 비즈니스 규칙이 어떻게 적용되는지 확인하세요.
- 마감일을 계산할 때 주말, 공휴일, 업무일 종료 시각을 어떻게 다룰지 미리 정하세요.
활용 사례
기술 원리
이 도구의 날짜 연산은 ECMAScript Date 객체로 구현된 율리우스 역추적 그레고리력을 기반으로 합니다. JavaScript에서 월은 0부터 시작합니다(1월 = 0, 12월 = 11). 이는 날짜 코드에서 오프바이원 오류의 가장 흔한 원인입니다. 일수 더하기는 간단합니다: new Date(d.getTime() + n * 86_400_000). 월 더하기는 더 까다롭습니다. 월은 28, 29, 30, 31일로 길이가 다르기 때문입니다. 일반적인 패턴인 date.setMonth(date.getMonth() + n)은 결과 월이 원래 일보다 짧을 때 오버플로우가 발생합니다. 예를 들어 1월 31일 + 1개월은 2월 28일이 아닌 3월 3일이 됩니다(엔진이 남은 3일을 3월로 넘깁니다). 이 도구는 setMonth 후 date.getMonth()를 비교하여 오버플로우를 감지하고, 필요할 때 일을 해당 월의 마지막 날로 고정합니다. 이는 moment.js, date-fns, Temporal의 Plain Date.add()와 동일한 동작입니다. 윤년은 표준 그레고리력 규칙을 따릅니다. 4로 나누어떨어지면 윤년이지만, 100으로 나누어떨어지는 연도(세기의 해)는 400으로도 나누어떨어져야 합니다. 따라서 1900년과 2100년은 평년이고, 2000년과 2024년은 윤년입니다. 이는 2월 29일을 건너는 계산에서 중요합니다. 2023년에 1월 29일 + 1개월 + 1개월은 3월 29일이 되지만, 2024년에는 롤오버 시 2월 29일(유효한 날짜)을 거쳐 3월 29일이 되며 고정이 필요 없습니다. 율리우스력에서 그레고리력으로 전환한 1582년 기준점은 무시합니다. 율리우스 역추적은 규칙을 무한정 과거로 확장하므로, 1582년 10월 15일 이전 날짜는 기술적으로 시대착오적이지만 현대적인 용도로는 정확하게 계산됩니다. 시간대 처리는 별도의 차원입니다. Date는 내부적으로 UTC 시각을 저장하고, .getDate(), .getMonth(), .toLocaleString()을 호출할 때만 호스트 시스템의 IANA 시간대(예: America/New_York, Asia/Shanghai)를 적용합니다. 두 가지 함정이 있습니다: (1) Z 접미사 없는 ISO 문자열("2026-06-10")은 UTC 자정으로 파싱되지만, Z 없는 "2026-06-10T00:00:00"은 로컬 시간 자정으로 파싱됩니다. 따라서 같은 date.getDate()가 사용자의 오프셋에 따라 9 또는 10을 반환할 수 있습니다. (2) 봄 DST 전환(02:00-03:00 건너뜀)과 가을 DST 전환(01:00-02:00 반복)은 일부 연산을 모호하게 만들어, "+24시간" 추가가 벽시계 기준 23시간 또는 25시간 후에 도달할 수 있습니다. 영업일, 평일 전용, 공휴일 인식 연산은 일반 롤오버에 의존하지 않고, 지역별 공휴일 목록으로 후처리해야 합니다(예: date-holidays npm 패키지 또는 맞춤 캘린더를 통해).
- JS Date 월은 0부터 시작: 1월 = 0, 12월 = 11. 오프바이원이 가장 흔한 실수입니다.
- setMonth 오버플로우: 1월 31일 + 1개월 = 3월 3일, 2월 28일 아님. 도구는 setMonth 후 getMonth()를 비교하여 월말로 고정합니다.
- 윤년: 4로 나누어떨어지면 윤년이지만, 세년은 400으로도 나누어떨어져야 합니다(1900년 아니오, 2000년 예, 2024년 예).
- Z 없는 ISO 8601("2026-06-10T00:00:00")은 로컬 시간으로 파싱되고, Z가 있으면 UTC입니다. getDate()가 다른 날짜를 반환할 수 있습니다.
- DST 전환은 23시간과 25시간짜리 하루를 만듭니다. +24시간 추가가 항상 +1 캘린더 일은 아닙니다.
- 일 수준 수학은 getTime() + n * 86_400_000으로 정확합니다. 더 긴 단위는 setMonth/setFullYear를 통해 고정과 함께 연쇄됩니다.
- 영업일 및 공휴일 인식 연산은 지역별 캘린더 테이블을 통해 위에 레이어링해야 하며, 엔진 자체에는 포함되지 않습니다.
예시
시작일에 90일 더하기 (체험판 / OKR 리뷰)
시작일 : 2026-01-15 (목요일)
연산 : + 90일
결과 : 2026-04-15 (수요일)
사용 사례 : 90일 체험판 종료일, 1분기 OKR 리뷰오늘로부터 6개월 빼기
시작일 : 2026-06-11
연산 : - 6개월
결과 : 2025-12-11
사용 사례 : 6개월 전 시점 조회 (갱신 또는 이탈 분석)2년 3개월 5일 더하기 (비자 만료일)
시작일 : 2026-01-15
1단계 : + 2년 -> 2028-01-15
2단계 : + 3개월 -> 2028-04-15
3단계 : + 5일 -> 2028-04-20
결과 : 2028-04-20월말 처리: 1월 31일 + 1개월
시작일 : 2026-01-31
연산 : + 1개월
결과 : 2026-02-28 (2026년 2월은 28일까지)
윤년 확인:
시작일 : 2028-01-31
연산 : + 1개월
결과 : 2028-02-29 (2028년은 윤년)결제 알림용 14일 빼기
구독 갱신일 : 2026-07-01
연산 : - 14일
알림 발송일 : 2026-06-17자주 묻는 질문
월말 날짜에 '개월'을 더할 때는 어떻게 처리되나요?
각 달의 일수가 달라서 1월 31일에 1개월을 더하면 결과가 모호해집니다. 본 계산기는 표준 관례를 따라 대상 월의 마지막 날로 맞춥니다. 즉 1월 31일 + 1개월 = 2월 28일(윤년에는 29일)이 됩니다. 이는 Excel의 EDATE 함수와 동일한 방식입니다.
주말과 공휴일도 포함되나요?
기본적으로 포함됩니다. '5일 더하기'는 달력 기준 5일을 더합니다. 영업일 계산(주말과 선택적으로 공휴일을 제외)이 필요하다면 별도의 'Workday Calculator' 도구를 사용하세요. 본 페이지는 순수 달력 산술용입니다.
년, 월, 주, 일을 한 번에 더할 수 있나요?
네, 가능합니다. 결과는 년 → 월 → 주 → 일 순서로 적용되며, 이는 JavaScript의 Temporal proposal을 비롯한 대부분의 날짜 라이브러리에서 사용하는 관례입니다. 이 순서가 중요한데, '1개월 30일'을 1월 1일에 더한 결과와 '30일 1개월'을 더한 결과는 서로 다르게 나옵니다.
일광 절약 시간(서머타임)은 어떻게 처리되나요?
이 계산은 절대 시간이 아닌 달력 날짜를 기준으로 동작하므로, DST 전환 구간을 가로질러 '하루'를 더해도 현지 시간대에서 동일한 시각이 유지됩니다. 24시간 단위의 정확한 산술이 필요하다면 단위를 일에서 시간으로 변경하세요.
지원되는 날짜 범위는 어디까지인가요?
JavaScript Date는 1970년을 기준으로 ±100,000,000일을 다루며, 대략 -271,821년부터 275,760년까지 해당됩니다. 본 계산기는 이 범위 내의 모든 과거 또는 미래 날짜를 처리할 수 있습니다. 단, 그레고리력 개혁(1582년) 이전 날짜의 경우 지역별 민간 달력이 다를 수 있다는 점을 유의하세요.
두 날짜를 빼는 것과 음수 일수를 더하는 것은 왜 다른가요?
사실상 다르지 않습니다. N일을 빼는 것은 -N일을 더하는 것과 같습니다. 두 날짜 사이의 차이를 구하고 싶다면 'Date Difference' 도구를 사용하세요. 본 페이지는 시작 날짜에 기간을 더하거나 빼는 단방향 산술 전용입니다.
입력한 데이터가 업로드되나요?
아니요. 모든 계산은 브라우저에서 실행됩니다. 페이지를 새로고침하면 입력값이 사라집니다.