Javascript - Date 날짜 계산 [날짜 비교, 날짜 차이]

이번 글에서는 Javascript의 Date 객체를 이용해 서로 다른 날짜를 비교하는 방법에 대해 알아보려고 합니다. 날짜를 비교하는 방법은 이전에 학습한 날짜 형식 맞추기날짜 설정하는 것에 비해 비교적 간단합니다. 기본적으로 <, > 비교 연산자를 사용해 서로 다른 날짜의 차이를 알 수 있습니다.

날짜 차이 또는 날짜 비교 혹은 날짜 계산

const january = new Date(2021, 0, 1);
const february = new Date(2021, 1, 1);

// true
console.log(january < february);

// false
console.log(january > february);

Date 객체는 <, > 비교 연산자를 이용해 값의 차이를 비교할 수 있고, 이를 통해 이전 날짜인지 다음 날짜인지 판별이 가능합니다. 예시에서는 인자를 사용해 Date 객체를 생성했지만 문자 값을 통해서도 Date 객체 생성이 가능하고 비교 또한 가능합니다.

날짜 차이 비교하기

같은 날짜 여부 확인

const january = new Date(2021, 0, 1);
const newJanuary = new Date(2021, 0, 1);

// false
console.log(january == newJanuary);

// false
console.log(january === newJanuary);

서로 다른 Date 객체의 경우 완전히 같은 시간인지는 아닌지는 날짜 차이를 비교할 때처럼 ==, === 와 같은 비교 연산자를 사용해 확인이 불가능합니다.

같은 날짜 확인 불가

위의 예시처럼 ==, === 비교 연산자를 이용해 날짜가 같은지 확인할 수 없기 때문에 getFullYear(), getMonth(), getDate()를 사용해 값을 비교해야 합니다.

const isSameDay = (target1, target2) => {
  return target1.getFullYear() === target2.getFullYear() &&
    target1.getMonth() === target2.getMonth() &&
    target1.getDate()=== target2.getDate();
}

const someday1 = new Date(2021, 0, 1, 0);
const someday2 = new Date(2021, 0, 1, 23);

// true
console.log(isSameDay(someday1, someday2));

getFullYear(), getMonth(), getDate()을 활용해 별도의 함수를 만들어 사용하는 코드는 위와 같습니다. isSameDay() 함수를 통해 직접적으로 년, 월, 일을 가져와 비교하면 날짜가 동일한지 판별이 가능합니다.

같은 날짜 확인 가능

동일한 시간 여부 확인

같은 날짜를 확인하는 방법은 위에서 설명한 것과 같지만 동일한 시간인지는 알 수 없습니다. 

const isSameTime = (target1, target2) => {
  return target1.getTime() === target2.getTime();
}

const january = new Date(2021, 0, 1);
const newJanuary = new Date(2021, 0, 1);

// true
console.log(isSameTime(january, newJanuary));

그렇기 때문에 초단위까지 같은 시간인지를 확인하려면 위와 같이 getTime()을 활용해 별도의 함수를 만들어 사용해야 합니다.

getDate()를 사용해 동일한 시간 확인

정리하기

서로 다른 Date의 차이는 <, > 비교 연산자를 사용해 확인할 수 있고, 날짜나 시간이 동일한지 확인하는 방법은 getFullYear(), getMonth(), getDate(), getTime()과 같은 함수를 사용해 직접 비교하는 기능을 만들어서 사용해야 합니다. Date 객체의 기본적인 부분이 더 궁금하신 분은 아래에 링크된 기초 편을 같이 읽어보시면 좋습니다.

 

Javascript - Date 기초 배우기 [new Date()]

맨 처음 자바스크립트를 통해 만난 Date는 생각보다 사용하기도 어렵고 어?라고 할 정도로 모호하고 쓰기 불편한 점이 많습니다. Java의 Date, Calendar 만큼 개발을 하는데에 편의성이나 활용도가 떨

7942yongdae.tistory.com

 

반응형

댓글

Designed by JB FACTORY