·2분 읽기
날짜 차이 계산 실전 — JavaScript Python D-day 함수 모음
두 날짜 사이의 일수, 시간, 분 차이를 정확히 계산하는 JavaScript/Python 코드와 D-day, 근무일수, 남은 시간 계산 실전 예시예요.

🕐
타임스탬프 변환기 바로 사용하기
Unix 타임스탬프와 날짜를 변환하세요
→
날짜 계산이 헷갈리는 이유
365일로 나누면 되지 않냐고요? 윤년, 월별 일수 차이, 서머타임, 타임존이 엮이면 단순 뺄셈이 틀려요.
예: 2024-02-28과 2024-03-01 사이는 며칠? 윤년이라 2일입니다. 2023년이면 1일이에요. 코드에서 이런 케이스를 수동 처리하면 버그가 쌓여요.
JavaScript — 기본 일수 계산
function diffDays(a, b) {
const MS = 1000 * 60 * 60 * 24;
return Math.floor((new Date(b) - new Date(a)) / MS);
}
diffDays('2026-01-01', '2026-04-18'); // 107
주의: Date 생성 시 YYYY-MM-DD는 UTC로 해석돼요. 로컬 자정 기준이 필요하면 T00:00:00을 붙이세요.
Python — 정확한 일수 계산
from datetime import date, datetime
d1 = date(2026, 1, 1)
d2 = date(2026, 4, 18)
print((d2 - d1).days) # 107
시간까지 포함한 차이:
dt1 = datetime(2026, 4, 18, 9, 0)
dt2 = datetime(2026, 4, 18, 17, 30)
diff = dt2 - dt1
print(diff.total_seconds() / 3600) # 8.5시간
D-day 함수 — 자주 쓰는 패턴
생일, 마감일까지 남은 일수를 표시하는 함수예요.
JavaScript:
function dDay(target) {
const now = new Date();
now.setHours(0,0,0,0);
const t = new Date(target);
t.setHours(0,0,0,0);
const days = Math.ceil((t - now) / (1000*60*60*24));
if (days > 0) return 'D-' + days;
if (days === 0) return 'D-Day';
return 'D+' + Math.abs(days);
}
Python:
from datetime import date
def d_day(target):
days = (target - date.today()).days
if days > 0: return 'D-' + str(days)
if days == 0: return 'D-Day'
return 'D+' + str(abs(days))
시간 단위까지 신경 쓰지 않으려면 시분초를 0으로 리셋하는 게 안전해요.
근무일수 계산 (주말 제외)
Python은 표준 라이브러리로 간단해요.
import numpy as np
np.busday_count('2026-01-01', '2026-05-01') # 86일
공휴일 제외하려면 holidays 라이브러리를 써요.
import holidays
kr_holidays = holidays.KR(years=2026)
np.busday_count('2026-01-01', '2026-05-01', holidays=list(kr_holidays.keys()))
JavaScript는 한 줄로는 안 되고 for 루프나 date-fns 라이브러리를 써야 해요.
타임존과 서머타임 주의점
국내 개발이면 대부분 KST(UTC+9) 하나라 문제 없어요. 해외 사용자가 섞이면 다음 규칙이 안전합니다.
1. 서버는 UTC로 저장·계산
2. 클라이언트 표시 때만 로컬 타임존으로 변환
3. 서머타임 있는 지역은 date-fns-tz 또는 Luxon 같은 라이브러리 필수
뉴욕 사용자에게 3시간 후 약속을 계산할 때 서머타임 경계에 걸리면 Date 객체만으로는 틀립니다.
Toolkio Timestamp Converter로 빠른 확인
특정 Unix 타임스탬프가 언제였는지, 또는 두 시점의 차이가 얼마인지 한 번에 보여줘요. 정규 라이브러리 설치 전 빠른 확인이 필요할 때 유용합니다.