C#의 DateTimeOffset.EqualsExact() 메서드는 현재 DateTimeOffset 개체가 지정된 DateTimeOffset 개체와 동일한 시간을 나타내고, 동일한 오프셋(offset)까지 갖는지 여부를 확인하는 데 사용됩니다.
구문(Syntax)
기본 구문은 다음과 같습니다.
public bool EqualsExact (DateTimeOffset val);
여기서 매개변수 val은 현재 개체와 비교할 DateTimeOffset 개체를 의미합니다.
EqualsExact()와 Equals()의 차이점
EqualsExact() 메서드는 날짜·시간 값뿐만 아니라 UTC 오프셋까지 정확히 일치해야 true를 반환합니다. 반면 Equals() 메서드는 두 개체가 같은 시점(point in time)을 나타내는지만 비교하므로, 오프셋이 달라도 실제 시각이 동일하다면 true를 반환할 수 있습니다. 따라서 시간대 정보까지 엄격하게 비교해야 하는 경우에 EqualsExact()를 사용하는 것이 적합합니다.
예제 1: 완전히 동일한 값 비교
다음은 DateTimeOffset.EqualsExact() 메서드를 구현한 첫 번째 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 11, 09, 5, 30, 10, new TimeSpan(-5, 0, 0));
DateTimeOffset dateTimeOffset2 = new DateTimeOffset(2019, 11, 09, 5, 30, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset1 = {0}", dateTimeOffset1);
Console.WriteLine("DateTimeOffset2 = {0}", dateTimeOffset2);
bool res = dateTimeOffset1.EqualsExact(dateTimeOffset2);
if (res) {
Console.Write("DateTimeOffset1 = DateTimeOffset2");
} else {
Console.Write("DateTimeOffset1과 DateTimeOffset2는 서로 다릅니다");
}
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTimeOffset1 = 11/9/2019 5:30:10 AM -05:00 DateTimeOffset2 = 11/9/2019 5:30:10 AM -05:00 DateTimeOffset1 = DateTimeOffset1
두 개체의 날짜, 시간, 오프셋이 모두 동일하므로 EqualsExact() 메서드는 true를 반환합니다.
예제 2: 서로 다른 값 비교
이번에는 서로 다른 날짜와 시간을 가진 두 개체를 비교하는 예제를 살펴보겠습니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 09, 09, 5, 30, 10, new TimeSpan(-5, 0, 0));
DateTimeOffset dateTimeOffset2 = new DateTimeOffset(2019, 11, 09, 9, 20, 20, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset1 = {0}", dateTimeOffset1);
Console.WriteLine("DateTimeOffset2 = {0}", dateTimeOffset2);
bool res = dateTimeOffset1.EqualsExact(dateTimeOffset2);
if (res) {
Console.Write("DateTimeOffset1 = DateTimeOffset2");
} else {
Console.Write("DateTimeOffset1과 DateTimeOffset2는 서로 다릅니다");
}
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTimeOffset1 = 9/9/2019 5:30:10 AM -05:00 DateTimeOffset2 = 11/9/2019 9:20:20 AM -05:00 DateTimeOffset1과 DateTimeOffset2는 서로 다릅니다
두 개체의 날짜와 시간이 서로 다르기 때문에 EqualsExact() 메서드는 false를 반환하고, "서로 다릅니다"라는 메시지가 출력되는 것을 확인할 수 있습니다.