두 날짜 값의 차이를 일 단위로 계산하는 방법 (JavaScript)

날짜를 다룰 때, 종종 특정 두 날짜 사이의 차이를 계산해야 하는 상황이 있습니다. 예를 들어, 이벤트나 예약 일정 사이의 간격을 알아보거나, 특정 기한까지 남은 일수를 계산할 때 말이죠. 이번 글에서는 JavaScript를 활용해 두 날짜 값의 차이를 '일 단위'로 손쉽게 계산하는 방법을 알아보겠습니다.

자바 스크립트 이번 달의 첫 번째 날짜와 마지막 날짜 구하기두 날짜 값의 차이를 일 단위로 계산하는 방법 (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}일 입니다.`);

설명:

  1. Date 객체 생성: new Date()를 이용해 계산할 두 날짜를 생성합니다.
  2. 밀리초 단위 차이 계산: 각 날짜를 밀리초 단위로 변환한 후, 두 값을 빼줍니다. 이 때 결과값은 두 날짜 사이의 밀리초 차이입니다.
  3. 밀리초를 일로 변환: 하루는 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! 😊