C#의 DateTimeOffset.AddYears() 메서드는 현재 인스턴스가 나타내는 날짜·시간 값에 지정한 연도 수를 더한 새로운 DateTimeOffset 객체를 반환합니다. 원본 인스턴스는 변경되지 않으며, 항상 새로운 값이 생성된다는 점을 기억해 두면 좋습니다.
문법(Syntax)
메서드의 기본 문법은 다음과 같습니다.
public DateTimeOffset AddYears (int val);
매개변수 val에는 더할 연도 수를 지정합니다. 양수를 넣으면 해당 연도만큼 미래 날짜가 되고, 음수를 넣으면 과거 날짜로 거슬러 올라갑니다.
예제 1 – 연도 더하기
다음은 AddYears() 메서드를 사용해 특정 날짜에 5년을 더하는 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 06, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset (연도 추가 전) = {0}", dateTimeOffset);
DateTimeOffset res = dateTimeOffset.AddYears(5);
Console.WriteLine("DateTimeOffset (연도 추가 후) = {0}", res);
}
}실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTimeOffset (연도 추가 전) = 6/9/2019 8:20:10 AM -05:00 DateTimeOffset (연도 추가 후) = 6/9/2024 8:20:10 AM -05:00
예제 2 – 연도 빼기
음수 값을 전달하면 연도를 뺄 수 있습니다. 아래 예제에서는 3년을 뺀 결과를 확인합니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 06, 09, 8, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset (연도 차감 전) = {0}", dateTimeOffset);
DateTimeOffset res = dateTimeOffset.AddYears(-3);
Console.WriteLine("DateTimeOffset (연도 차감 후) = {0}", res);
}
}실행 결과
위 코드의 출력 결과는 다음과 같습니다.
DateTimeOffset (연도 차감 전) = 6/9/2019 8:20:10 AM -05:00 DateTimeOffset (연도 차감 후) = 6/9/2016 8:20:10 AM -05:00
참고 사항
AddYears() 메서드는 UTC 오프셋(여기서는 -05:00)을 그대로 유지하면서 연도 부분만 조정합니다. 또한 계산 결과가 표현 가능한 범위인 MinValue(0001년 1월 1일)부터 MaxValue(9999년 12월 31일)를 벗어나면 ArgumentOutOfRangeException이 발생하므로, 극단적인 날짜를 다룰 때는 예외 처리를 함께 고려하는 것이 좋습니다.