C#의 DateTime.Compare() 메서드는 두 개의 DateTime 인스턴스를 비교하는 데 사용되는 정적 메서드입니다. 이 메서드는 비교 결과에 따라 정수 값을 반환하며, 반환 값의 의미는 다음과 같습니다.
- 0보다 작은 값(<0) − date1이 date2보다 빠른 경우
- 0 − date1과 date2가 동일한 경우
- 0보다 큰 값(>0) − date1이 date2보다 늦은 경우
구문(Syntax)
DateTime.Compare() 메서드의 기본 구문은 다음과 같습니다.
public static int Compare (DateTime d1, DateTime d2);
여기서 d1과 d2는 서로 비교할 두 개의 날짜(DateTime) 객체를 의미합니다. 매개변수로 전달된 순서가 중요하며, 첫 번째 매개변수(d1)를 기준으로 결과가 결정됩니다.
예제 1: 과거 날짜와 미래 날짜 비교하기
아래 예제는 DateTime.Compare() 메서드를 활용하여 두 날짜를 비교하는 방법을 보여줍니다.
using System;
public class Demo {
public static void Main(){
DateTime d1 = new DateTime(2019, 11, 20, 6, 20, 40);
DateTime d2 = d1.AddYears(5);
Console.WriteLine("Initial DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
Console.WriteLine("New DateTime (adding years) = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d2);
int res = DateTime.Compare(d1, d2);
// d1이 d2보다 빠르므로 0보다 작은 값(-1) 반환
Console.WriteLine(res);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Initial DateTime = 20 November 2019, 06:20:40 New DateTime (adding years) = 20 November 2024, 06:20:40 -1
d1(2019년)에 AddYears() 메서드로 5년을 더해 d2(2024년)를 생성했습니다. d1이 d2보다 이전 날짜이므로 Compare() 메서드는 -1을 반환합니다.
예제 2: 동일한 날짜 비교하기
이번에는 같은 값을 가진 두 DateTime 객체를 비교하는 예제입니다.
using System;
public class Demo {
public static void Main(){
DateTime d1 = new DateTime(2019, 11, 20, 6, 20, 40);
DateTime d2 = new DateTime(2019, 11, 20, 6, 20, 40);
Console.WriteLine("DateTime 1 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
Console.WriteLine("DateTime 2 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d2);
int res = DateTime.Compare(d1, d2);
// d1과 d2가 같으므로 0 반환
Console.WriteLine(res);
}
}출력 결과
DateTime 1 = 20 November 2019, 06:20:40 DateTime 2 = 20 November 2019, 06:20:40 0
두 DateTime 객체가 연도, 월, 일, 시, 분, 초까지 완전히 동일하므로 메서드는 0을 반환합니다.
정리
DateTime.Compare() 메서드는 날짜와 시간을 객관적으로 비교해야 할 때 유용하게 사용됩니다. 특히 조건문에서 두 날짜의 선후 관계를 판단하거나, 데이터 정렬 로직을 구현할 때 자주 활용됩니다. 참고로 C#에서는 비교 연산자(<, >, == 등)를 통해서도 DateTime 객체를 비교할 수 있으며, 내부적으로는 CompareTo() 메서드와 동일한 방식으로 동작합니다.