ToolDeck

날짜 계산기

두 날짜의 차이를 연, 월, 일 등으로 계산

날짜 계산이란?

날짜 계산은 두 달력 날짜 사이의 차이를 구하거나, 특정 날짜에 일정 기간을 더하거나 빼는 작업입니다. 온라인 날짜 계산기를 사용하면 수동으로 세지 않고도 두 날짜 사이의 정확한 일수, 주수, 개월수, 연수를 바로 알 수 있습니다. 프로젝트 계획, 계약법, 재무 회계, 소프트웨어 개발 등 다양한 분야에서 활용됩니다.

날짜 계산이 복잡한 이유는 그레고리력의 불규칙한 구조 때문입니다. 월은 28일, 29일, 30일, 또는 31일을 가집니다. 윤년 규칙에 따라 연도는 365일 또는 366일입니다. 단순히 일수를 빼는 방식은 날짜가 서로 다른 월이나 연도에 걸쳐 있을 때 잘못된 결과를 냅니다. 올바른 날짜 차이 알고리즘은 각 달력 단위를 개별적으로 처리하여 이러한 불규칙성을 반영해야 합니다.

날짜 연산은 다양한 프로그래밍 맥락에서 등장합니다. 토큰 만료 시간 계산, 반복 이벤트 스케줄링, SLA 기한 산정, 로그 항목 간 경과 시간 측정 등이 그 예입니다. DevOps 워크플로에서는 인증서 유효 기간, 배포 동결 기간, 온콜 순환 주기를 다룰 때 활용됩니다. 대부분의 언어가 날짜 라이브러리를 제공하지만, 브라우저 기반 계산기는 코드 작성이나 패키지 설치, REPL 실행 없이 빠른 확인이 필요할 때 즉각적인 답을 제공합니다.

이 날짜 계산기를 사용하는 이유

두 날짜 사이의 시간을 여러 단위로 즉시 분석합니다. 수식도, 코드도, 회원가입도 필요 없습니다.

즉각적인 결과
두 날짜를 선택하면 연, 월, 주, 일, 시간, 분 단위의 차이가 바로 표시됩니다. 날짜를 변경하면 결과가 즉시 업데이트됩니다.
🔒
개인정보 보호 우선
모든 계산은 브라우저에서 실행됩니다. 입력한 날짜는 어떤 서버에도 전송되지 않으며 저장되거나 기록되지 않습니다.
📅
다양한 출력 단위
총 일수, 주수, 개월수, 연-월-일 전체 분석 등 모든 단위의 결과를 동시에 확인할 수 있습니다. 단위 간 변환을 직접 할 필요가 없습니다.
🔢
계정 불필요
바로 사용할 수 있습니다. 로그인, 구독, 사용 제한이 없습니다. 빠른 날짜 확인이 필요할 때마다 즐겨찾기에서 바로 열어 사용하세요.

날짜 계산기 활용 사례

프론트엔드 개발
기능 출시일까지 남은 일수 확인, 카운트다운 타이머 로직 검증, 날짜 선택기 컴포넌트를 예상 간격에 맞게 테스트할 때 활용합니다.
백엔드 엔지니어링
토큰 만료 기간 검증, 캐시 TTL 산정, 예약 작업 간격이 올바른 다음 실행 날짜를 생성하는지 확인할 때 사용합니다.
DevOps & SRE
사후 분석에서 장애 타임스탬프 간격 측정, 인증서 만료 예고 시간 산정, 휴일 기간 중 배포 동결 기간 결정에 활용합니다.
QA 및 테스트
특정 날짜 오프셋으로 테스트 데이터 생성, 생년월일에서 정확한 나이를 계산하여 연령 제한 로직 검증, 날짜 경계 조건이 올바르게 처리되는지 확인할 때 사용합니다.
프로젝트 관리
스프린트 기간 계산, 마일스톤 간 영업일 수 측정, 시작일에서 달력 기준 일수를 세어 납기 일정을 추정하는 데 활용합니다.
학생 및 학습
시험까지 남은 일수 세기, 학기 길이 계산, 컴퓨터 과학 수업의 날짜 연산 과제 답안을 검증하는 데 사용합니다.

날짜 기간 단위 참조

날짜 차이 계산에는 다양한 길이의 단위가 포함됩니다. 월과 연은 고정된 기간이 아니므로 총 일수를 단순히 나누면 부정확한 결과가 나올 수 있습니다. 아래 표에 각 단위와 그 범위를 정리했습니다:

단위환산비고
1 year365 or 366 daysDepends on leap year
1 month28–31 daysVaries by month
1 week7 daysFixed
1 day24 hoursFixed (ignoring DST transitions)
1 hour3,600 secondsFixed
1 minute60 secondsFixed

주요 날짜 형식

날짜를 프로그래밍 방식으로 다룰 때, 형식에 따라 날짜 문자열 파싱 방식이 결정됩니다. 잘못된 형식을 사용하면 눈에 띄지 않는 버그가 발생할 수 있습니다. ISO 8601은 명확하고 시간대를 지원하므로 데이터 교환 시 가장 안전한 선택입니다. 아래 표에 자주 접하게 되는 형식을 정리했습니다:

형식예시사용 환경
ISO 86012026-04-10T14:30:00ZAPIs, databases, logs
RFC 2822Fri, 10 Apr 2026 14:30:00 +0000Email headers, HTTP
Unix timestamp1775831400Epoch-based systems
US format04/10/2026User-facing (US locale)
European format10.04.2026User-facing (EU locale)
Short ISO2026-04-10HTML date inputs, SQL DATE

코드 예시: 두 날짜 사이의 일수 계산

JavaScript, Python, Go, 커맨드라인에서 두 날짜의 차이를 계산하는 실용적인 예시입니다. 각 코드는 총 일수 계산과 언어가 지원하는 경우 달력 단위 분석도 함께 보여줍니다.

JavaScript
// Calculate days between two dates
const start = new Date('2026-01-15')
const end = new Date('2026-04-10')
const diffMs = end.getTime() - start.getTime()
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24))
console.log(diffDays) // → 85

// Get year, month, day breakdown
function dateDiff(a, b) {
  let years = b.getFullYear() - a.getFullYear()
  let months = b.getMonth() - a.getMonth()
  let days = b.getDate() - a.getDate()
  if (days < 0) {
    months--
    days += new Date(b.getFullYear(), b.getMonth(), 0).getDate()
  }
  if (months < 0) { years--; months += 12 }
  return { years, months, days }
}
console.log(dateDiff(start, end)) // → { years: 0, months: 2, days: 26 }
Python
from datetime import date, timedelta
from dateutil.relativedelta import relativedelta

start = date(2026, 1, 15)
end = date(2026, 4, 10)

# Total days
diff = (end - start).days
print(diff)  # → 85

# Year/month/day breakdown (requires python-dateutil)
rd = relativedelta(end, start)
print(f"{rd.years}y {rd.months}m {rd.days}d")  # → 0y 2m 26d

# Add 90 days to a date
future = start + timedelta(days=90)
print(future)  # → 2026-04-15
Go
package main

import (
	"fmt"
	"time"
)

func main() {
	start := time.Date(2026, 1, 15, 0, 0, 0, 0, time.UTC)
	end := time.Date(2026, 4, 10, 0, 0, 0, 0, time.UTC)

	// Total duration
	diff := end.Sub(start)
	days := int(diff.Hours() / 24)
	fmt.Println(days) // → 85

	// Add 90 days
	future := start.AddDate(0, 0, 90)
	fmt.Println(future.Format("2006-01-02")) // → 2026-04-15
}
CLI (GNU date / macOS)
# Days between two dates (GNU coreutils)
echo $(( ($(date -d "2026-04-10" +%s) - $(date -d "2026-01-15" +%s)) / 86400 ))
# → 85

# Add 90 days to a date (GNU date)
date -d "2026-01-15 + 90 days" +%Y-%m-%d
# → 2026-04-15

# macOS (BSD date) — add 90 days
date -j -v+90d -f "%Y-%m-%d" "2026-01-15" +%Y-%m-%d
# → 2026-04-15

자주 묻는 질문

두 날짜 사이의 일수를 어떻게 계산하나요?
이전 날짜를 이후 날짜에서 빼면 밀리초(또는 해당 언어의 기본 기간 타입) 단위의 차이를 얻을 수 있습니다. 이를 하루의 밀리초 수(86,400,000)로 나누면 총 경과 일수가 나옵니다. 연, 월, 나머지 일로 분해하려면 월의 길이가 가변적이기 때문에 각 단위를 개별적으로 처리해야 합니다.
날짜 차이 계산 시 시작일과 종료일이 포함되나요?
관례적으로 날짜 차이는 시작일 또는 종료일 중 하나를 제외하고 계산합니다. 1월 1일과 1월 2일을 선택하면 결과는 1일입니다. 양 끝점을 모두 포함하는 포함 계산이 필요한 경우 결과에 1을 더하세요. 이 도구는 대부분의 프로그래밍 언어에서 사용하는 종료일 제외 방식을 따릅니다.
날짜 계산에서 윤년은 어떻게 처리되나요?
윤년에는 2월 29일이 추가되어 해당 연도가 365일이 아닌 366일이 됩니다. 그레고리력 윤년 규칙은 다음과 같습니다. 4로 나누어지는 해는 윤년이지만, 100의 배수인 해는 예외이며 400의 배수인 해는 다시 윤년입니다. 따라서 2024년과 2028년은 윤년이고, 1900년은 아니었으며, 2000년은 윤년이었습니다. 연/월/일 단위로 작동하는 날짜 차이 알고리즘은 이를 자동으로 처리합니다. 총 일수로 변환하는 알고리즘은 범위가 2월 29일에 걸쳐 있을 때 추가 하루를 고려해야 합니다.
달력 기준 일수와 영업일의 차이는 무엇인가요?
달력 기준 일수는 주말과 공휴일을 포함한 모든 날을 셉니다. 영업일(근무일이라고도 함)은 토요일, 일요일, 공휴일을 제외합니다. 이 도구는 달력 기준 일수를 계산합니다. 대략적인 영업일로 변환하려면 총 달력 일수에 5/7을 곱하세요. 정확한 영업일 수를 계산하려면 해당 지역의 공휴일 달력도 필요합니다.
시작일에 일수를 더해 미래 날짜를 계산할 수 있나요?
가능합니다. JavaScript에서는 Date 객체를 생성하고 setDate(getDate() + n)을 호출하세요. Python에서는 date 객체에 timedelta(days=n)을 더하면 됩니다. Go에서는 time.AddDate(0, 0, n)을 사용하세요. 이 도구는 두 날짜 간의 차이 계산에 초점을 맞추지만, 산술 연산을 검증하는 데 활용할 수 있습니다. 시작일과 예상 결과 날짜를 입력하고 총 일수 출력이 더한 오프셋과 일치하는지 확인하세요.
도구마다 날짜 간 개월수 결과가 다른 이유는 무엇인가요?
월 계산은 월의 길이가 다르기 때문에 모호합니다. 1월 31일에서 2월 28일까지가 1개월인지, 아니면 0개월 28일인지를 생각해 보세요. 라이브러리마다 다른 선택을 합니다. 가장 일반적인 방식(Python의 dateutil, Java의 Period, 그리고 이 도구에서 사용)은 동일한 날짜에 도달하거나 짧은 달의 마지막 유효일에 도달하는 것을 한 달로 계산합니다. 결과를 비교할 때는 사용 중인 라이브러리의 방식을 반드시 확인하세요.
날짜 계산이 시간대의 영향을 받나요?
시간 성분 없이 날짜만(연-월-일) 선택하면 계산은 시간대에 독립적입니다. 특정 순간이 아닌 달력 날짜를 기준으로 작동하기 때문입니다. 시간과 시간대를 포함한 두 특정 시점의 차이를 계산해야 하는 경우에는 ISO 8601 전체 타임스탬프를 사용하고 빼기 전에 두 값을 모두 UTC로 변환해야 합니다. 이 도구는 달력 날짜에만 적용됩니다.