📅 날짜 계산기
두 날짜 차이, 날짜 가감산, 영업일 (주말/공휴일 제외), 나이를 한 번에 계산. YYYY-MM-DD / YYYY/MM/DD / YYYY년MM월DD일 자동 인식, 타임존 지원.
🔒 개인정보 보호
- ・모든 계산은 브라우저에서 처리됩니다
- ・입력한 날짜는 서버로 전송되지 않습니다
- ・가입 · 로그인 · 결제 불필요
💡 입력 형식 자동 인식
📖 자주 걸리는 지점
두 날짜의 차이, 날짜의 가감산, 영업일(주말과 임의의 공휴일을 제외), 나이를 계산합니다. YYYY-MM-DD / YYYY/MM/DD / 일본식 날짜 표기를 자동 판정하고 타임존도 지정할 수 있습니다. 처리는 브라우저 안에서 끝납니다. 날짜의 계산에는 유일한 정답이 없습니다 — 기간을 며칠로 세는지, 달을 넘는 가산을 어떻게 다루는지는 규약으로 정해지는 것이며 구현이 어떻게 동작하는지와는 별개의 이야기입니다.
| 사례 | 무슨 일이 일어나는가 | 어떻게 하면 되는가 |
|---|---|---|
| 일수의 차이가 하루 어긋난다 | 4 월 1 일부터 4 월 3 일까지는 2 일일까요, 3 일일까요. 뺄셈을 하면 2 이지만 일상어의 3 일간 은 1 일 · 2 일 · 3 일을 센 결과입니다. 이 차이는 첫날을 산입하는지 여부이며 업계와 문맥에 따라 답이 달라집니다 — 숙박 일수는 뺄셈(2 박), 근무 일수는 양끝을 포함, 계약 기간은 계약서의 정의에 따릅니다. 일본의 민법은 초일 불산입을 원칙으로 합니다(다음 날부터 셉니다)만 실무에서는 이 원칙과 다른 세는 법이 계약으로 정해져 있는 쪽이 많으므로 법률의 원칙을 알아도 답은 나오지 않습니다. | 사양서나 계약서에 첫날을 산입하는지를 명기하세요 — 이는 구현에서 정할 것이 아니라 관계자의 합의로 먼저 정해 두어야 할 것입니다. 구현 쪽에서는 변수 이름에 의도를 담는 것이 가장 효과적입니다 — days 가 아니라 nights 나 inclusive_days 라고 쓰면 읽는 사람이 잘못 보지 않습니다. 테스트에는 반드시 같은 날 케이스를 넣으세요 — 4 월 1 일부터 4 월 1 일까지가 0 일인지 1 일인지로 이 한 건이 사양을 명확히 합니다. 경계는 하루 어긋나도 동작하므로 테스트가 없으면 프로덕션까지 알아채지 못합니다. |
| 월의 가산이 기대대로 되지 않는다 | 1 월 31 일의 1 개월 뒤는 며칠일까요. 2 월 31 일은 존재하지 않으므로 구현에 따라 2 월 28 일(월말로 반올림), 3 월 3 일(31 일을 더해 넘김), 3 월 1 일 중 하나가 됩니다. 어느 것도 틀린 것이 아니라 규약의 차이입니다. 더 까다로운 것은 가역이 아니라는 점으로 1 개월 뒤의 1 개월 전이 원래 날짜로 돌아오지 않는 경우가 있습니다 — 1 월 31 일 → 2 월 28 일 → 1 월 28 일. 구독의 결제일로 매월 31 일을 고르면 이 문제에 매월 부딪힙니다. | 월 단위의 가산을 하기 전에 월말을 어떻게 다룰지를 정하세요 — 일반적인 것은 존재하지 않는 날은 월말로 반올림이며 이것이 가장 직관에 가깝고 대부분의 라이브러리의 기본값이기도 합니다. 결제나 계약 갱신처럼 날짜가 의미를 갖는 장면에서는 애초에 29 일 이후를 고를 수 없게 하는 것이 가장 안전합니다 — 많은 구독 서비스가 이 설계를 채택하고 있는 것은 이 문제를 피하기 위해서입니다. 월말 마감이 필요하다면 매월 말일 이라는 별도의 개념으로 구현하세요 — 1 월 31 일 + 1 개월 이 아니라 다음 달의 마지막 날 로 정의하면 모호함이 사라집니다. |
| 영업일의 계산이 나라나 해에 따라 어긋난다 | 공휴일은 매년 바뀝니다. 일본의 경우 몇몇 공휴일은 몇 번째 월요일이므로 날짜가 매년 움직이고 춘분 · 추분은 천문 계산으로 정해지기 때문에 전년의 관보에서 확정됩니다. 나아가 일요일과 겹치면 대체 휴일이 발생하고 공휴일에 낀 평일은 휴일이 됩니다. 나라를 넘으면 상황은 완전히 달라져 같은 영업일 5 일 이라도 일본 · 미국 · 중국 · 이슬람권에서는 끝나는 날이 다릅니다 — 특히 중국의 춘절과 중동의 금요일 휴무는 일본의 감각에서 크게 벗어납니다. | 이 도구는 공휴일 목록을 직접 입력하는 방식이므로 목록이 낡으면 결과도 낡습니다. 일본의 공휴일은 내각부가 CSV 를 공개하고 있으므로 거기서 매년 갱신하세요 — 작년의 목록을 돌려쓰는 것이 이런 종류의 계산에서 가장 흔한 실수입니다. 복수의 나라가 얽히는 납기 계산에서는 반드시 나라별로 별도의 목록으로 계산하세요 — 영업일이라는 말이 같아도 의미하는 날이 다릅니다. 그리고 계산 결과가 납기나 지급 기일이 되는 장면에서는 반드시 상대방과 날짜 자체를 확인하세요 — 5 영업일 뒤 가 아니라 몇 월 며칠까지 로 합의하면 세는 법의 차이는 문제가 되지 않습니다. |
날짜만 다루고 있다고 생각해도 타임존은 영향을 미칩니다. 2024-01-01 을 UTC 로 해석하느냐 일본 시간으로 해석하느냐에 따라 같은 순간이 1 월 1 일도 되고 12 월 31 일도 됩니다 — 일본 시간 1 월 1 일 8 시는 UTC 로는 아직 12 월 31 일 23 시입니다. 서버가 UTC, 이용자가 일본인 구성에서는 오늘의 집계가 일본 시간 9 시에 바뀌는 현상이 일어납니다. 데이터베이스에 날짜를 저장할 때는 시각을 갖지 않는 DATE 타입을 쓰거나 반드시 UTC 로 통일하세요. 한 가지 더, 생일이나 기념일은 순간이 아니라 그 지역의 달력 위의 날짜입니다 — 1990 년 5 월 3 일생인 사람은 어디에 있어도 5 월 3 일이 생일이고 비행기로 날짜변경선을 넘어도 바뀌지 않습니다. 이런 값에 타임존을 갖게 하면 해외에서 접속했을 때 하루 어긋납니다 — 시각을 갖지 않는 편이 옳은 장면이 있다고 기억해 두세요.
📖 사용법
-
1
모드 선택상단 탭에서 기간/가감산/영업일/나이 선택.
-
2
날짜 입력YYYY-MM-DD 등 다양한 형식 가능.
-
3
계산계산 버튼 클릭.
❓ 자주 묻는 질문
날짜가 서버로 전송됩니까?
윤년과 월말 처리는?
공휴일 목록 입력법?
🔗 관련 도구
🐛 이 도구에서 문제가 발생했나요?
무료 · 가입 불필요. 재현 절차만이라도 도움이 됩니다. 보고는 운영자에게 직접 전달되어 개선에 사용됩니다.
보고 감사합니다!
운영자에게 전달되었습니다. 개선에 사용됩니다.