Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# DateTime.CompareTo() 메서드 완벽 정리 – 날짜 비교 구문, 반환 값, 예제 총정리

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> 인터페이스를 구현하고 있기 때문에 제공되는 기능으로, 날짜 정렬이나 기간 계산 등 다양한 로직에서 활용됩니다. 단순히 두 날짜가 같은지만 확인하고 싶다면 == 연산자를, 선후 관계만 파악하고 싶다면 <, > 연산자를 사용하는 것도 좋은 대안입니다.