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

C# DateTime.AddMonths() 메서드 완벽 가이드: 개월 수 더하기와 빼기

C#의 DateTime.AddMonths() 메서드는 현재 DateTime 인스턴스의 날짜 값에 지정한 개월 수를 더한 새로운 DateTime 객체를 반환합니다. 이 메서드는 원본 인스턴스를 변경하지 않고 새로운 값을 생성하므로, 날짜 계산 시 안전하게 사용할 수 있습니다.

문법(Syntax)

DateTime.AddMonths() 메서드의 기본 문법은 다음과 같습니다.

public DateTime AddMonths(int val);

매개변수 val은 더할 개월 수를 의미합니다. 양수를 입력하면 개월 수가 더해지고, 음수를 입력하면 해당 개월 수만큼 빼집니다.

예제 1: 개월 수 더하기

다음 예제는 DateTime.AddMonths() 메서드를 사용하여 특정 날짜에 5개월을 더하는 방법을 보여줍니다.

using System;
public class Demo {
    public static void Main(){
        DateTime d1 = new DateTime(2019, 05, 15, 5, 15, 25);
        DateTime d2 = d1.AddMonths(5);
        System.Console.WriteLine("Initial DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
        System.Console.WriteLine("\nNew DateTime (After adding months) = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d2);
    }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Initial DateTime = 15 May 2019, 05:15:25
New DateTime (After adding months) = 15 October 2019, 05:15:25

2019년 5월 15일에 5개월을 더해 2019년 10월 15일이 된 것을 확인할 수 있습니다. 시간 정보(05:15:25)는 그대로 유지됩니다.

예제 2: 개월 수 빼기

AddMonths() 메서드에 음수 값을 전달하면 지정한 개월 수만큼 과거 날짜로 이동할 수 있습니다. 다음 예제는 2개월을 빼는 방법을 보여줍니다.

using System;
public class Demo {
    public static void Main(){
        DateTime d1 = new DateTime(2019, 08, 20, 3, 30, 50);
        DateTime d2 = d1.AddMonths(-2);
        System.Console.WriteLine("Initial DateTime = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d1);
        System.Console.WriteLine("\nNew DateTime (After subtracting months) = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", d2);
    }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Initial DateTime = 20 August 2019, 03:30:50
New DateTime (After subtracting months) = 20 June 2019, 03:30:50

2019년 8월 20일에서 2개월을 빼면 2019년 6월 20일이 됩니다.

참고 사항

  • 불변성(Immutability): AddMonths()는 기존 DateTime 객체를 수정하지 않고 항상 새로운 DateTime 객체를 반환합니다.
  • 일자 자동 조정: 계산 결과의 일(day)이 해당 월에 존재하지 않으면, 예를 들어 1월 31일에 1개월을 더하면 2월 28일(윤년일 경우 29일)로 자동 조정됩니다.
  • 예외 처리: 계산 결과가 DateTime.MinValue보다 작거나 DateTime.MaxValue보다 크면 ArgumentOutOfRangeException이 발생합니다.