C#의 DateTimeOffset.AddMonths() 메서드는 현재 인스턴스의 날짜·시간 값에 지정한 개수만큼 월(month)을 더하는 데 사용됩니다. 이 메서드는 원본 객체를 변경하지 않고, 월이 추가된 새로운 DateTimeOffset 값을 반환합니다.
문법(Syntax)
기본 문법은 다음과 같습니다.
public DateTimeOffset AddMonths (int val);
매개변수 val에는 더할 월의 개수를 지정합니다. 만약 월을 빼고 싶다면 음수 값을 전달하면 됩니다.
예제 1: 월 더하기
아래 예제는 DateTimeOffset.AddMonths() 메서드를 사용해 3개월을 더하는 방법을 보여줍니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 08, 10, 4, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset (before adding months) = {0}", dateTimeOffset);
DateTimeOffset res = dateTimeOffset.AddMonths(3);
Console.WriteLine("DateTimeOffset (after adding months) = {0}", res);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
DateTimeOffset (before adding months) = 8/10/2019 4:20:10 AM -05:00 DateTimeOffset (after adding months) = 11/10/2019 4:20:10 AM -05:00
2019년 8월 10일에 3개월을 더해 2019년 11월 10일이 된 것을 확인할 수 있습니다. 시간과 UTC 오프셋(-05:00)은 그대로 유지됩니다.
예제 2: 월 빼기(음수 값 사용)
음수 값을 전달하면 특정 개월 수만큼 과거 날짜로 이동할 수 있습니다. 아래는 5개월을 빼는 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset = new DateTimeOffset(2019, 08, 10, 4, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset (before subtracting months) = {0}", dateTimeOffset);
DateTimeOffset res = dateTimeOffset.AddMonths(-5);
Console.WriteLine("DateTimeOffset (after subtracting months) = {0}", res);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
DateTimeOffset (before subtracting months) = 8/10/2019 4:20:10 AM -05:00 DateTimeOffset (after subtracting months) = 3/10/2019 4:20:10 AM -05:00
정리 및 주요 특징
- AddMonths() 메서드는 기존 DateTimeOffset 객체를 수정하지 않고 새로운 객체를 반환합니다.
- 월 단위 계산 시 연도가 자동으로 넘어가거나 거슬러 올라갑니다(예: 12월 + 1개월 → 다음 해 1월).
- 결과일이 해당 월에 존재하지 않으면(예: 1월 31일 + 1개월), .NET은 유효한 마지막 날짜(2월 28일 또는 29일)로 조정합니다.
- 시간대 오프셋(UTC offset)은 변경되지 않고 그대로 유지됩니다.