C#의 DateTimeOffset.Add() 메서드는 현재 인스턴스가 나타내는 날짜 및 시간 값에 지정된 시간 간격(TimeSpan)을 더한 결과를 새로운 DateTimeOffset 개체로 반환합니다. 이 메서드는 원본 개체를 수정하지 않고 새 개체를 생성하기 때문에, 기존 날짜 데이터를 유지하면서 안전하게 시간 계산을 수행할 수 있습니다.
구문
DateTimeOffset.Add() 메서드의 기본 구문은 다음과 같습니다.
public DateTimeOffset Add (TimeSpan t);
매개변수 t는 더할 시간 간격을 나타내며, TimeSpan 형식입니다. 만약 연산 결과가 표현 가능한 최소값(MinValue) 또는 최대값(MaxValue) 범위를 벗어나면 ArgumentOutOfRangeException이 발생할 수 있습니다.
예제 1: 특정 시간 간격 더하기
다음은 DateTimeOffset.Add() 메서드를 사용하여 20시간을 더하는 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 10, 10, 9, 45, 20, new TimeSpan(-10, 0, 0));
TimeSpan ts = new TimeSpan(20, 0, 0);
DateTimeOffset res = dateTimeOffset.Add(ts);
Console.WriteLine("DateTimeOffset = {0}", res);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 표시됩니다.
DateTimeOffset = 10/11/2019 5:45:20 AM -10:00
2019년 10월 10일 오전 9시 45분 20초에서 20시간을 더했기 때문에, 결과적으로 2019년 10월 11일 오전 5시 45분 20초가 된 것을 확인할 수 있습니다.
예제 2: MinValue에 시간 더하기
이번에는 DateTimeOffset.MinValue에 시간 간격을 더하는 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset = DateTimeOffset.MinValue;
TimeSpan ts = new TimeSpan(20, 0, 0);
DateTimeOffset res = dateTimeOffset.Add(ts);
Console.WriteLine("DateTimeOffset = {0}", res);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 표시됩니다.
DateTimeOffset = 1/1/0001 8:00:00 PM +00:00
함께 알아두면 좋은 관련 메서드
DateTimeOffset 구조체는 Add() 외에도 다양한 시간 단위별 편의 메서드를 제공합니다.
- AddDays(): 지정된 일 수를 더합니다.
- AddHours(): 지정된 시간 수를 더합니다.
- AddMinutes(): 지정된 분 수를 더합니다.
- AddSeconds(): 지정된 초 수를 더합니다.
- Subtract(): 지정된 시간 간격 또는 DateTimeOffset 값을 뺍니다.
특정 단위로 간단히 더할 때는 위의 전용 메서드를 사용하고, 복합적인 시간 간격(예: 1일 3시간 30분)을 다룰 때는 TimeSpan 객체와 함께 Add() 메서드를 활용하는 것이 좋습니다.