날짜를 다룰 때, 종종 특정 두 날짜 사이의 차이를 계산해야 하는 상황이 있습니다. 예를 들어, 이벤트나 예약 일정 사이의 간격을 알아보거나, 특정 기한까지 남은 일수를 계산할 때 말이죠. 이번 글에서는 JavaScript를 활용해 두 날짜 값의 차이를 '일 단위'로 손쉽게 계산하는 방법을 알아보겠습니다.
날짜를 다룰 때, 종종 특정 두 날짜 사이의 차이를 계산해야 하는 상황이 있습니다. 예를 들어, 이벤트나 예약 일정 사이의 간격을 알아보거나, 특정 기한까지 남은 일수를 계산할 때 말이죠. 이번 글에서는 JavaScript를 활용해 두 날짜 값의 차이를 '일 단위'로 손쉽게 계산하는 방법을 알아보겠습니다.
기본적인 날짜 차이 계산
JavaScript에서 날짜를 다룰 때는 Date
객체를 활용합니다. 두 날짜 사이의 차이를 계산하는 가장 간단한 방법은 날짜 객체의 시간 값을 밀리초 단위로 변환한 다음, 이를 활용해 '일'로 변환하는 것입니다. 아래는 그 기본적인 로직입니다.
// 두 날짜 값 설정
const date1 = new Date('2024-10-10');
const date2 = new Date('2024-11-01');
// 밀리초 단위의 차이 계산
const diffInMilliseconds = date2 - date1;
// 하루는 24시간 * 60분 * 60초 * 1000밀리초
const millisecondsInADay = 24 * 60 * 60 * 1000;
// 일 단위로 차이 계산
const diffInDays = diffInMilliseconds / millisecondsInADay;
console.log(`두 날짜 사이의 차이는 ${diffInDays}일 입니다.`);
설명:
- Date 객체 생성:
new Date()
를 이용해 계산할 두 날짜를 생성합니다. - 밀리초 단위 차이 계산: 각 날짜를 밀리초 단위로 변환한 후, 두 값을 빼줍니다. 이 때 결과값은 두 날짜 사이의 밀리초 차이입니다.
- 밀리초를 일로 변환: 하루는 24시간이고, 1시간은 60분, 1분은 60초, 1초는 1000밀리초입니다. 이를 이용해 밀리초를 '일'로 변환합니다.
개선된 방법: Math.floor로 정확한 일수 계산하기
위 방법은 소수점까지 계산이 되기 때문에, 만약 정확한 일수(정수)를 원한다면 Math.floor()
를 사용하여 소수점을 제거할 수 있습니다.
const diffInDaysExact = Math.floor(diffInMilliseconds / millisecondsInADay);
console.log(`두 날짜 사이의 정확한 차이는 ${diffInDaysExact}일 입니다.`);
Math.floor()
는 소수점을 버리고 가장 가까운 낮은 정수를 반환합니다. 이로 인해 예를 들어, 1.9일 같은 값이 나오는 경우에도 '1일'로 정확하게 표현할 수 있습니다.
다양한 날짜 형식 다루기
JavaScript에서는 날짜를 다양한 형식으로 입력할 수 있습니다. 만약 'YYYY-MM-DD' 형식뿐 아니라, 'MM/DD/YYYY' 또는 타임스탬프 형식을 사용하고 싶다면, new Date()
는 유연하게 이를 처리합니다.
const date1 = new Date('2024/10/10'); // MM/DD/YYYY 형식
const date2 = new Date(1735689600000); // 타임스탬프 (밀리초)
실전 예시: 남은 기간 계산기 만들기
이제, 실제로 사용 가능한 남은 기간 계산기 예시를 만들어보겠습니다. 특정 기한까지 남은 일수를 계산해주는 작은 유틸리티입니다.
function daysUntil(targetDate) {
const today = new Date();
const target = new Date(targetDate);
const diffInMilliseconds = target - today;
const millisecondsInADay = 24 * 60 * 60 * 1000;
return Math.ceil(diffInMilliseconds / millisecondsInADay);
}
const dueDate = '2024-12-31';
console.log(`D-day까지 남은 일수: ${daysUntil(dueDate)}일`);
설명:
- 오늘 날짜와 목표 날짜 설정:
new Date()
를 이용해 오늘 날짜와 목표 날짜를 설정합니다. - 밀리초 차이 계산 후 올림:
Math.ceil()
을 이용해 소수점이 생기면 올림 처리를 하여 남은 일수를 더 정확하게 표시합니다.
주의사항: 시간대와 서머타임
JavaScript에서 날짜를 다룰 때, 시간대(Timezone)나 서머타임(Daylight Saving Time)에 따라 결과가 달라질 수 있습니다. 이를 방지하기 위해 항상 시간을 00:00:00로 설정하는 방법이 있습니다.
const date1 = new Date('2024-10-10T00:00:00');
const date2 = new Date('2024-11-01T00:00:00');
또한, toUTCString()
또는 getUTCDate()
와 같은 UTC 관련 메서드를 사용할 수도 있습니다. 이것을 통해 전 세계 어디서나 동일한 기준으로 날짜 차이를 계산할 수 있습니다.
마치며
날짜 사이의 차이를 계산하는 것은 여러 상황에서 유용하게 활용됩니다. 이번 포스팅에서 배운 방법으로, 간단한 계산에서부터 더 복잡한 날짜 비교까지 손쉽게 해결할 수 있습니다. 이제 직접 두 날짜 사이의 차이를 계산해보세요!
궁금한 점이 있다면 언제든 댓글로 질문해 주세요. Happy Coding! 😊