오늘 날짜, 또는 특정 날짜를 비교하여 어떤 날짜가 시간상 앞에 있는지 확인하는 방법을 알아보겠습니다.

1. 비교연산자를 이용한 방법

비교 연산자(>, <, ==, >=, <=)로 두 날짜를 비교할 수 있습니다.

  • 크기가 작다는 것은 시간상 과거라는 의미
  • 크기가 크다는 것은 시간상 미래라는 의미
  • 크기가 같으면 같은 날짜
const date1 = new Date("2023-09-17");
const date2 = new Date("2023-09-25");

if (date1 < date2) {
  console.log("date1은 date2보다 이전입니다.");
} else if (date1 > date2) {
  console.log("date1은 date2보다 이후입니다.");
} else {
  console.log("date1과 date2는 같은 날짜입니다.");
}

Output:

date1은 date2보다 이전입니다.

2. getTime()을 이용한 방법

Date.getTime()은 날짜에 대한 timestamp 값을 리턴합니다. timestamp는 UTC 시간(1970년 1월 1일에서 현재까지 흐른 시간)을 millisecond로 표현한 것 입니다.

아래와 같이 timestamp를 출력하면 정수로 출력되며, 비교 연산자로 정수를 비교하면 됩니다. 정수의 크기가 큰 것이 시간상 미래가 됩니다.

//timestamp로 변환
const date1 = new Date("2023-09-17").getTime();
const date2 = new Date("2023-09-25").getTime();

// 출력
console.log("date1: " + date1);
console.log("date2: " + date2);

// 비교
if (date1 < date2) {
  console.log("date1은 date2보다 이전입니다.");
} else if (date1 > date2) {
  console.log("date1은 date2보다 이후입니다.");
} else {
  console.log("date1과 date2는 같은 날짜입니다.");
}

Output:

date1: 1694908800000
date2: 1695600000000
date1은 date2보다 이전입니다.

3. 시간 비교

Date는 날짜 정보와 시간 정보를 함께 갖고 있습니다. 따라서, 날짜를 비교하는 방법과 동일하게 시간도 비교할 수 있습니다.

아래 예제는 getTime()으로 비교하는 예제이며, Date 객체를 비교 연산자로 비교할 수도 있습니다.

const date1 = new Date("2023-09-25 12:20:30").getTime();
const date2 = new Date("2023-09-25 12:20:40").getTime();

if (date1 < date2) {
  console.log("date1은 date2보다 이전입니다.");
} else if (date1 > date2) {
  console.log("date1은 date2보다 이후입니다.");
} else {
  console.log("date1과 date2는 같은 날짜입니다.");
}

Output:

date1은 date2보다 이전입니다.

4. 오늘 날짜와 특정 날짜 비교

new Date()로 객체를 생성하면, 오늘 날짜 정보를 갖고 있는 Date 객체가 생성됩니다. 이 Date를 다른 시간을 갖고 있는 Date와 비교할 수 있습니다.

두 날짜와 시간을 비교하는 방법은 위에서 소개한 방법과 동일합니다.

const today = new Date();
const date = new Date("2023-09-25");

if (today < date) {
  console.log("date1은 date2보다 이전입니다.");
} else if (today > date) {
  console.log("date1은 date2보다 이후입니다.");
} else {
  console.log("date1과 date2는 같은 날짜입니다.");
}

Output:

date1은 date2보다 이후입니다.