본문으로 건너뛰기
AZ Tools

날짜 계산에서 자주 틀리는 것들

날짜 세기는 가장 쉬운 계산 같지만, 마감일, 디데이, 나이, 통보 기간은 자주 하루씩 어긋납니다. 원인은 계산 자체보다 미처 의식하지 못한 선택에 있는 경우가 대부분입니다. 첫날을 셀지, 월말을 어떻게 볼지, 어느 지역의 공휴일을 적용할지 같은 것들입니다. 이 글은 흔한 함정을 직접 확인할 수 있는 예시와 함께 살펴봅니다.

첫날을 세는가, 세지 않는가

2026년 1월 1일부터 3월 1일까지는 두 날짜 사이의 간격을 세면 59일이고, 대부분의 계산기와 프로그래밍 라이브러리가 이렇게 셉니다. 첫날과 마지막 날을 모두 세는 "1월 1일부터 3월 1일까지(양 끝 포함)"라면 60일입니다. 어느 쪽도 틀리지 않았지만 서로 다른 질문에 답하는 것이라, 계약서나 임대 기간, 휴가 규정은 보통 어느 쪽인지 밝혀 둡니다.

디데이 계산에는 고유한 관례가 있습니다. 당일은 D-day, 하루 전은 D-1, 다음 날은 D+1입니다. "사귄 지 100일" 같은 기념일은 전통적으로 첫날을 1일로 세기 때문에, 100일째는 단순히 100일을 더한 날보다 하루 빠릅니다. 두 도구의 결과가 정확히 하루 차이 난다면 거의 언제나 이 때문입니다.

달을 더하는 것은 날을 더하는 것과 다르다

한 달은 28~31일이므로 "한 달 뒤"를 날수 하나로 말할 수 없습니다. 대부분의 날짜 도구는 다음 달의 같은 날짜로 옮기고, 그 날짜가 없으면 그달의 마지막 날로 맞춥니다. 1월 31일에 한 달을 더하면 2월 28일(윤년이면 29일)입니다. 일부 프로그래밍 함수는 넘치는 날을 다음 달로 넘겨 3월 3일을 내놓기도 해서, 서로 다른 시스템을 쓰면 매달 결제일이나 마감일이 어긋날 수 있습니다.

이렇게 맞추기 때문에 한 달을 두 번 더한 결과가 두 달을 한 번에 더한 결과와 늘 같지는 않습니다. 1월 31일에 한 달을 더하면 2월 28일, 거기에 한 달을 더하면 3월 28일이지만, 1월 31일에 두 달을 더하면 3월 31일입니다. 통보 기간이나 구독 갱신일은 계약이나 서비스가 실제로 어떤 규칙을 쓰는지 확인하세요.

윤년과 2월 29일

4로 나누어떨어지는 해는 윤년이지만, 100으로 나누어떨어지는 해는 400으로도 나누어떨어져야 윤년입니다. 그래서 2024년과 2000년은 윤년이었고, 1900년은 아니었으며 2100년도 아닙니다. 이 규칙 덕분에 달력은 3천 년이 넘는 기간 동안 태양년과 하루 정도 안쪽으로 맞춰집니다.

2월 29일에 태어난 사람도 해마다 나이를 먹지만, 다른 해에 어느 날을 생일로 볼지는 관례의 문제이고 법적으로는 나라마다 다릅니다. 2월 28일로 보는 곳도, 3월 1일로 보는 곳도 있습니다. 나이 자체는 다 채운 햇수로 셉니다. 예를 들어 한국은 2023년 6월부터 태어나자마자 한 살로 세던 방식 대신 이 만 나이를 공식적으로 통일해 쓰고 있습니다.

영업일과 공휴일

영업일 계산은 주말을 건너뛰므로, 금요일부터 영업일 5일 뒤는 수요일이 아니라 다음 주 금요일입니다. 어려운 것은 공휴일입니다. 나라마다, 때로는 지역마다 다르고, 음력 명절이나 부활절처럼 해마다 날짜가 바뀌는 것도 있으며, 주말과 겹치면 대체 휴일이 생기기도 합니다. 범용 계산기가 이를 모두 알 수는 없으므로, 공휴일 근처의 마감일은 해당하는 공식 달력으로 확인해야 합니다.

주말도 어디서나 같지 않습니다. 많은 나라가 토요일과 일요일에 쉬지만 금요일과 토요일에 쉬는 나라도 있고, 교대 근무는 주말 자체를 따지지 않습니다. 규정에 "근무일"이라고 적혀 있다면 그 규정이 속한 장소와 조직의 근무일을 뜻합니다.

하루가 24시간이 아닐 때

서머타임을 쓰는 지역에서는 시계를 앞당기는 날이 23시간, 되돌리는 날이 25시간입니다. 그래서 시간 차이를 86,400초로 나눠 날수를 세는 소프트웨어는 그 무렵에 하루가 모자라거나 넘칠 수 있습니다. 흘러간 초가 아니라 달력의 날짜를 세면 이 문제를 피할 수 있습니다.

시간대도 비슷한 오류를 만듭니다. 한 시간대의 자정으로 저장된 날짜가 다른 시간대에서는 전날로 표시될 수 있습니다. 생일이나 마감일처럼 날짜만 중요할 때는 시각을 붙이지 않은 순수한 날짜로 다루는 것이 안전합니다.

  • 날수에 첫날이 포함되는지 밝힌다
  • 달을 더할 때 월말 날짜를 어떻게 처리하는지 확인한다
  • 1900년과 2100년은 윤년이 아니라는 점을 기억한다
  • 해당 나라와 지역의 공휴일 달력을 확인한다
  • 서머타임 전환 무렵에는 초가 아니라 달력 날짜를 센다
  • 생일과 마감일은 시각 없이 날짜로 저장한다

관련 도구