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

C# DateTimeOffset.AddMonths() 메서드 완벽 정리

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)은 변경되지 않고 그대로 유지됩니다.