C#의 DateTime.DaysInMonth() 메서드는 지정된 연도와 월에 해당하는 날짜 수(일수)를 반환합니다. 예를 들어, 1월을 나타내는 월 값 1을 전달하면 31이 반환됩니다. 이 메서드는 윤년 여부까지 자동으로 판단해 주기 때문에 달력 계산이나 날짜 처리 로직에서 매우 유용하게 활용됩니다.
문법(Syntax)
DateTime.DaysInMonth() 메서드의 기본 문법은 다음과 같습니다.
public static int DaysInMonth (int year, int month);
이 메서드는 정적(static) 메서드이므로 DateTime 인스턴스를 생성하지 않고도 바로 호출할 수 있으며, 두 개의 매개변수를 받습니다.
- year: 조회할 연도 (예: 2019)
- month: 조회할 월 (1~12 사이의 값)
예제 1: 두 개의 날짜 비교와 함께 일수 확인하기
다음은 DateTime.DaysInMonth() 메서드를 실제로 구현한 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTime date1 = new DateTime(2019, 08, 20, 6, 20, 40);
DateTime date2 = new DateTime(2019, 06, 20, 6, 20, 40);
Console.WriteLine("DateTime 1 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", date1);
Console.WriteLine("Days in DateTime 1 month = "+DateTime.DaysInMonth(2019, 08));
Console.WriteLine("\nDateTime 2 = {0:dd} {0:y}, {0:hh}:{0:mm}:{0:ss} ", date2);
Console.WriteLine("Days in DateTime 2 month = "+DateTime.DaysInMonth(2019, 06));
int res = date1.CompareTo(date2);
// date1이 date2보다 늦으므로 0보다 큰 값 반환
Console.WriteLine("\nReturn Value (comparison) = "+res);
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
DateTime 1 = 20 August 2019, 06:20:40 Days in DateTime 1 month = 31 DateTime 2 = 20 June 2019, 06:20:40 Days in DateTime 2 month = 30 Return Value (comparison) = 1
출력 결과에서 확인할 수 있듯이, 8월은 31일, 6월은 30일로 각각 올바른 일수가 반환되었습니다. 또한 CompareTo() 메서드를 통해 date1이 date2보다 이후 날짜임을 나타내는 값 1이 출력되었습니다.
예제 2: 윤년 판단 활용하기
DateTime.DaysInMonth() 메서드는 윤년 계산에도 유용합니다. 다음 예제에서는 같은 2월이라도 연도에 따라 일수가 어떻게 달라지는지 확인할 수 있습니다.
using System;
public class Demo {
public static void Main(){
int year1 = 2019, year2 = 2016;
int FebMonth = 2;
Console.WriteLine("Days in 2019, Feb month = "+DateTime.DaysInMonth(year1, FebMonth));
Console.WriteLine("Days in 2016, Feb month = "+DateTime.DaysInMonth(year2, FebMonth));
}
}실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
Days in 2019, Feb month = 28 Days in 2016, Feb month = 29
2019년은 평년이므로 2월이 28일로 반환되었고, 2016년은 윤년이므로 2월이 29일로 반환되었습니다. 이처럼 개발자가 직접 윤년 조건식을 작성할 필요 없이, DaysInMonth() 메서드 하나로 손쉽게 정확한 일수를 구할 수 있습니다.
정리
DateTime.DaysInMonth() 메서드는 특정 연도와 월의 총 일수를 반환하는 간편하고 안정적인 방법입니다. 주요 특징을 정리하면 다음과 같습니다.
- 윤년을 자동으로 고려하여 정확한 일수를 반환합니다.
- 정적 메서드이므로 객체 생성 없이 즉시 사용할 수 있습니다.
- 월(month) 값은 반드시 1~12 범위 내에 있어야 하며, 범위를 벗어나면 ArgumentOutOfRangeException이 발생합니다.