JavaScript에서 두 날짜 사이의 일 수 차이를 구하려면 Math.floor() 메서드를 활용하면 됩니다. 핵심 원리는 간단합니다. 두 Date 객체를 서로 빼면 밀리초 단위의 시간 차이가 반환되는데, 이 값을 초 단위로 변환한 뒤 하루에 해당하는 초 수인 86400으로 나누면 원하는 일 수를 얻을 수 있습니다.
계산 과정 살펴보기
구체적인 계산 순서는 다음과 같습니다.
- 두 날짜 객체의 차이를 구하고 절댓값 처리 → 밀리초 단위 값
- 밀리초를 1000으로 나누어 초 단위로 변환
- 초 단위 값을 86400(24시간 × 60분 × 60초)으로 나눈 후
Math.floor()로 소수점 버림
예제 코드
아래 코드를 실행하면 두 날짜 사이의 일 수를 확인할 수 있습니다.
<html>
<head>
<title>JavaScript Get Days</title>
</head>
<body>
<script>
var date1, date2;
date1 = new Date();
document.write(""+date1);
date2 = new Date( "Dec 10, 2015 20:15:10" );
document.write("<br>"+date2);
// 두 날짜 사이의 총 초(second) 구하기
var res = Math.abs(date1 - date2) / 1000;
var days = Math.floor(res / 86400);
document.write("<br>Difference: "+days);
</script>
</body>
</html>실행 결과
Mon May 28 2018 09:32:56 GMT+0530 (India Standard Time) Thu Dec 10 2015 20:15:10 GMT+0530 (India Standard Time) Difference: 899
코드 설명
위 예제에서 Math.abs()를 사용한 이유는 날짜 순서와 관계없이 항상 양수인 차이 값을 얻기 위함입니다. 만약 특정 날짜가 기준일보다 미래인지 과거인지 판별해야 한다면 Math.abs() 없이 부호를 그대로 활용할 수도 있습니다. 또한 Math.floor() 대신 Math.round()나 Math.ceil()을 사용하면 반올림 또는 올림 처리된 결과를 얻을 수 있으니, 필요에 따라 적절히 선택하시기 바랍니다.