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이 발생합니다.