시간 차이 계산/ 년 · 월 · 일 · 시 · 분
두 날짜 또는 시간 사이의 정확한 차이를 계산 — 년, 월, 일, 시, 분, 초로 분해하고 총 일수와 총 주수도 표시합니다.
시작
종료
시작부터 종료까지의 시간
1
년
년
0
월
월
0
일
일
0
시
시간
0
분
분
0
초
초
365
총 일수
52
총 주수
8,760
총 시간
525,600
총 분
이 도구가 도움이 되었나요?
코드 예제
JavaScript (date-fns)
import {
differenceInYears, differenceInMonths,
differenceInDays, differenceInHours,
formatDistanceToNow, intervalToDuration,
format
} from 'date-fns';
const start = new Date('2020-01-15');
const end = new Date('2024-06-30');
differenceInYears(end, start) // 4
differenceInDays(end, start) // 1628
differenceInHours(end, start) // 39072
// Human-readable breakdown
intervalToDuration({ start, end })
// { years:4, months:5, days:15, hours:0, ... }
// Relative time
formatDistanceToNow(start, { addSuffix: true })
// "about 4 years ago"Python
from datetime import datetime, date from dateutil.relativedelta import relativedelta start = datetime(2020, 1, 15) end = datetime(2024, 6, 30) # Total difference diff = end - start diff.days # 1628 diff.total_seconds() / 3600 # 39072.0 # Calendar-aware breakdown (pip install python-dateutil) delta = relativedelta(end, start) delta.years # 4 delta.months # 5 delta.days # 15 # Age calculation birthday = date(1990, 5, 20) today = date.today() age = relativedelta(today, birthday).years
Go
import (
"fmt"
"time"
)
start := time.Date(2020, 1, 15, 0, 0, 0, 0, time.UTC)
end := time.Date(2024, 6, 30, 0, 0, 0, 0, time.UTC)
duration := end.Sub(start)
fmt.Println(duration.Hours() / 24) // 1628 days
fmt.Println(duration.Hours()) // 39072 hours
// Calendar diff (years/months) — manual calculation
years := end.Year() - start.Year()
months := int(end.Month()) - int(start.Month())
if months < 0 {
years--
months += 12
}
fmt.Printf("%d years, %d months\n", years, months)SQL
-- MySQL / MariaDB
SELECT
DATEDIFF('2024-06-30', '2020-01-15') AS days,
TIMESTAMPDIFF(YEAR, '2020-01-15', '2024-06-30') AS years,
TIMESTAMPDIFF(MONTH, '2020-01-15', '2024-06-30') AS months,
TIMESTAMPDIFF(HOUR, '2020-01-15', '2024-06-30') AS hours;
-- PostgreSQL
SELECT
'2024-06-30'::date - '2020-01-15'::date AS days,
AGE('2024-06-30', '2020-01-15') AS human_readable;
-- 4 years 5 mons 15 days
-- SQLite
SELECT julianday('2024-06-30') - julianday('2020-01-15');
-- 1628.0자주 묻는 질문
밀리초를 단순 나누기로 년/월/일을 구할 수 없는 이유는?
밀리초 나누기는 정확한 총 시간을 제공하지만 'X년 Y월 Z일'의 직관적인 분해를 제공하지 않습니다. 월의 길이가 다르기(28~31일) 때문에 달력을 인식하는 알고리즘을 사용합니다.
나이 또는 근속 연수를 계산하려면?
생년월일 또는 시작일을 '시작'으로, 현재 날짜를 '종료'로 입력하면 정확한 년수(남은 월과 일 포함)가 표시됩니다.
두 날짜 사이의 영업일 수는?
영업일 계산은 더 복잡합니다: 주말을 제외해야 하며, 선택적으로 휴일도 제외합니다. 프로덕션 환경에서는 date-fns의 differenceInBusinessDays 같은 라이브러리를 사용하세요.
윤초가 시간 차이 계산에 영향을 주나요?
일반적인 날짜 계산에서는 영향을 주지 않습니다. JavaScript의 Date 객체와 대부분의 OS는 윤초를 고려하지 않습니다. 매우 정확한 타이밍 측정에서만 중요합니다.
JavaScript에서 상대 시간('3일 전' 등)을 표시하려면?
Intl.RelativeTimeFormat API(모던 브라우저에서 기본 지원)를 사용하세요: const rtf = new Intl.RelativeTimeFormat('ko', { numeric: 'auto' }); rtf.format(-3, 'day'). 또는 date-fns의 formatDistanceToNow()를 사용하세요.
서로 다른 시간대의 시간 차이를 계산하려면?
JavaScript의 Date 객체는 내부적으로 UTC 타임스탬프를 저장하고, 표시할 때만 시간대 정보가 적용됩니다. getTime() 값을 빼면 시간대에 관계없이 올바른 차이를 얻을 수 있습니다.