날짜 계산기
계산 결과
총 일수
- 연수
- 1
- 개월 수
- 0
- 일수
- 0
- 총 주수
- 52.1 주
날짜 차이는 더하기는 쉬워도 틀리기 쉽습니다. 1월 31일부터 3월 1일까지는 29일이고 대부분 사람은 이것을 1개월 1일이라고 부르겠지만, 1월 31일에 1개월을 더하면 2월 28일이 되므로 개월 수에서 자리를 빌려 오는 서투른 뺄셈은 1개월 마이너스 1일이나 0개월을 내놓습니다. 이 계산기는 같은 구간을 네 가지로 보고합니다. 총 일수, 총 주수, 그리고 달력처럼 말일을 맞추는 연월일 분해입니다.
하루, 한 주, 한 달, 한 분기, 1년은 각각 며칠인가
| 구간 | 일수 |
|---|---|
| 일 | 1 |
| 주 | 7 |
| 개월 | 28 – 31 |
| 분기 | 90 – 92 |
| 연 | 365 또는 366 |
앞의 두 줄만 상수입니다. 한 달은 28일에서 31일이고 한 분기는 90일에서 92일이라, 90일이 정확히 한 분기가 되는 것은 마침 알맞은 달에서 시작할 때뿐입니다. 위의 연월일 분해가 나눗셈이 아니라 달력에서 세어 올라가는 이유가 여기 있습니다.
공식
총 일수 = 시작일부터 종료일까지의 온전한 일수; 연월일 분해는 넘어가지 않는 가장 큰 온전한 개월 수를 취합니다
- 총 일수
- 두 날짜 사이의 온전한 일수. 시작일은 세지 않고 종료일은 셉니다
- 총 주수
- 총 일수를 7로 나눈 값. 정수 주로 반올림하지 않고 소수 한 자리로 유지합니다
- 개월 수
- 달력에서 들어가는 온전한 개월 수. 30일 묶음으로 세지 않습니다
- 일수
- 그 개월 수를 빼고 남은 일수. 언제나 다음 달보다 짧습니다
마감까지 며칠 차이인지 세거나, 프로젝트가 얼마나 걸렸는지 알아보거나, 남이 말한 숫자를 확인할 때 씁니다. 믿을 것은 일수뿐입니다. 연월일 분해는 같은 구간을 달력 단위로 설명한 것이라 365일은 1년으로, 364일은 11개월 30일로 읽힙니다. 두 숫자가 서로 어긋나 보이지만 둘 다 사실입니다. 하지 못하는 것은 영업일만 세는 일이고, 1582년 이전 날짜를 소급 그레고리력이 아닌 것으로 다루는 일입니다.
계산 예시
2026년 1월 1일부터 2027년 1월 1일까지
- 온전한 일수: 2026년은 평년이라 1월 1일부터 2027년 1월 1일까지 365일 — 시작일은 빼고 종료일은 셈.
- 개월 세기: 1년이 딱 들어가 종료일에 닿으므로 연수 1, 개월 수와 일수는 모두 0.
- 총 주수: 365 ÷ 7 = 52.14이고 정수 52로 반올림하지 않고 소수 한 자리로 52.1.
- 총 일수가 기준: 먼저 계산되고 연월일 분해에서 역산되지 않음.
두 읽는 방법이 정확히 일치하는 깔끔한 경우입니다. 일치하지 않는 쪽은 다음 예시입니다.
2026년 1월 31일부터 2026년 3월 1일까지
- 온전한 일수: 2월 28일과 3월 1일을 더해 29일.
- 1월 31일에 한 달을 더하면 2월 28일로 맞추어지고 그날은 아직 종료일보다 앞이므로 개월 수가 1.
- 1월 31일에 두 달을 더하면 3월 31일이라 3월 1일을 지나치므로 개월 수는 1에서 멈춤.
- 2월 28일에서 3월 1일까지 남은 하루가 일수이고, 분해는 1개월 1일.
개월 수에서 자리를 빌려 오는 뺄셈이 틀리는 자리가 여기입니다. 날짜 숫자 31과 1을 견주어 자리를 빌리고, 1개월 마이너스 30일이나 0개월 29일을 내놓습니다. 어느 쪽도 종료일로 되돌아가지 않습니다.
2024년 2월 29일부터 2025년 2월 28일까지
- 2024년은 윤년이고 2025년은 아니어서 두 끝점은 365일 떨어져 있음 — 날짜 숫자는 29에서 28로 내려가지만.
- 2024년 2월 29일에서 1년은 2025년 2월 28일 — 달력에서 1년은 고정된 일수가 아님.
- 세어 올라가 종료일에 정확히 닿아 개월 수와 일수가 모두 0.
- 총 일수는 첫 예시와 같은 365일인데, 구간 안의 모든 날짜는 하루씩 앞.
정확히 365일인 구간이 어디서 시작하느냐에 따라 1년이 되기도 하고 아니기도 합니다. 이 도구가 둘 중 하나를 고르지 않고 두 읽기를 함께 보여 주는 이유입니다.
한계
연월일 분해는 단위 환산이 아니라 설명입니다. 한 달은 28일에서 31일이라 같은 30일도 어떤 짝에서는 1개월로 읽히고 다른 짝에서는 0개월로 읽히며, 여기서 쓰는 규칙은 다음 개월을 더하면 넘어갈 때까지 온전한 달력을 더해 보는 것입니다. 다른 도구는 다른 규칙을 써서 같은 두 날짜에 하루나 이틀 다른 답을 냅니다. 총 일수에는 그런 자유가 없습니다. 영업일을 세거나 공휴일을 건너뛰지도 않습니다.
자주 묻는 질문
- 두 날짜 사이에 며칠이 있나요?
- 시작일부터 종료일까지 온전한 일수를 셉니다. 시작일은 세지 않고 종료일은 셉니다. 2026년 1월 1일부터 2027년 1월 1일까지는 365일인데 2026년이 평년이기 때문입니다. 같은 날짜끼리는 0일로 읽히게 하는 관례가 이것이고, 이 사이트의 다른 날짜 도구들도 같은 관례를 씁니다.
- 1월 31일부터 3월 1일까지는 몇 개월 며칠인가요?
- 1개월 1일입니다. 1월 31일에 1개월을 더하면 2월 28일로 맞추어지고 그날은 아직 3월 1일에 못 미칩니다. 2개월을 더하면 3월 31일이라 지나칩니다. 2월 28일에서 3월 1일까지 남은 것이 하루입니다. 개월 수에서 자리를 빌려 오는 뺄셈은 대신 마이너스 30일을 내놓습니다.
- 시작일도 세나요?
- 아니요. 시작일은 세기 시작하는 날의 하루 전이고 종료일은 포함됩니다. 그래서 같은 날짜끼리는 0일로, 1월 1일부터 1월 2일까지는 1일로 읽힙니다. 여기의 영업일 계산기와 날짜 더하기 빼기 계산기도 같은 관례를 쓰므로 세 페이지의 숫자가 서로 맞아떨어집니다.
- 1년이 365일일 때도 있고 366일일 때도 있는 이유는 무엇인가요?
- 달력에서 1년의 길이가 고정되어 있지 않기 때문이며, 한 달의 길이도 마찬가지입니다. 2024년 2월 29일부터 2025년 2월 28일까지는 365일이고 분해는 이것을 1년이라고 부릅니다. 시작일에 1년을 더하면 종료일에 닿기 때문입니다. 윤일이 들어 있는 구간은 366일이고 이것도 1년으로 읽힙니다.
- 나중 날짜를 먼저 넣어도 되나요?
- 됩니다. 종료일이 더 이르면 두 끝점을 바꿔 계산하므로 어느 쪽이든 답이 같습니다. 부호가 붙은 차이는 다른 도구의 일이고, 이 계산기는 구간의 크기를 보고합니다. 마감일이나 프로젝트 기간에 필요한 것이 바로 그 값입니다.
참고 문헌
- relativedelta — 날짜 계산 라이브러리 dateutil의 모듈 — dateutil project documentation
- ECMAScript Language Specification: Numbers and Dates — 자바스크립트의 날짜 처리 규정 — Ecma International