C#의 DateTime.CompareTo() 메서드는 현재 인스턴스의 날짜·시간 값을 지정된 다른 DateTime 값과 비교하는 데 사용됩니다. 두 날짜 중 어느 쪽이 앞서거나 뒤처지는지, 혹은 완전히 같은지를 판별해야 할 때 유용하게 활용할 수 있습니다.
구문
기본 문법은 다음과 같습니다.
public int CompareTo (DateTime val);
매개변수 val은 현재 인스턴스와 비교할 대상 날짜를 의미합니다.
반환 값
이 메서드는 비교 결과를 나타내는 정수 값을 반환하며, 그 의미는 다음과 같습니다.
- 0보다 작은 값(<0) − 현재 인스턴스가 val보다 이전(빠른) 날짜인 경우
- 0 − 현재 인스턴스와 val이 동일한 경우
- 0보다 큰 값(>0) − 현재 인스턴스가 val보다 이후(늦은) 날짜인 경우
예제 1: 동일한 날짜 비교하기
다음은 DateTime.CompareTo() 메서드를 사용해 서로 같은 두 날짜를 비교하는 예제입니다.
using System;
public class Demo {
public static void Main(){
DateTime date1 = new DateTime(2019, 05, 20, 6, 20, 40);
DateTime date2 = new DateTime(2019, 05, 20, 6, 20, 40);
Console.WriteLine("DateTime 1 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", date1);
Console.WriteLine("DateTime 2 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", date2);
int res = date1.CompareTo(date2);
// date1과 date2가 같으므로 0을 반환합니다.
Console.WriteLine(res);
}
}
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTime 1 = 20 May 2019, 06:20:40 DateTime 2 = 20 May 2019, 06:20:40 0
두 날짜가 완전히 동일하므로 비교 결과로 0이 반환되는 것을 확인할 수 있습니다.
예제 2: 서로 다른 날짜 비교하기
이번에는 서로 다른 두 날짜를 비교해 보겠습니다.
using System;
public class Demo {
public static void Main(){
DateTime date1 = new DateTime(2019, 08, 20, 6, 20, 40);
DateTime date2 = new DateTime(2019, 05, 20, 6, 20, 40);
Console.WriteLine("DateTime 1 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", date1);
Console.WriteLine("DateTime 2 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", date2);
int res = date1.CompareTo(date2);
// date1이 date2보다 늦은 날짜이므로 0보다 큰 값을 반환합니다.
Console.WriteLine(res);
}
}
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTime 1 = 20 August 2019, 06:20:40 DateTime 2 = 20 May 2019, 06:20:40 1
date1(8월)이 date2(5월)보다 이후 날짜이기 때문에 양수인 1이 반환됩니다.
정리
DateTime.CompareTo() 메서드는 DateTime이 IComparable<DateTime> 인터페이스를 구현하고 있기 때문에 제공되는 기능으로, 날짜 정렬이나 기간 계산 등 다양한 로직에서 활용됩니다. 단순히 두 날짜가 같은지만 확인하고 싶다면 == 연산자를, 선후 관계만 파악하고 싶다면 <, > 연산자를 사용하는 것도 좋은 대안입니다.