C#에서 특정 월(月)의 마지막 일자를 가져오는 쉬운 방법 3가지


C# 닷넷 프로그램을 개발할 때 날짜를 처리하는 로직을 구현해야 할 때가 있습니다.

날짜를 처리하는 과정에서 특정 월(달)의 마지막 일(Day) 또는 마지막 일자(Date)를 가져와서 처리하는 구문을 많이 사용하게 되는데 기본적으로 C# 닷넷에서 월의 마지막 일자를 가져오는 메서드는 제공되지 않습니다. 따라서 필요한 경우 개발자가 적절한 방법으로 월의 마지막 일자를 가져오는 구문을 작성해 주어야 합니다.

이번 글에서는 C#에서 특정 월(月)의 마지막 일자를 가져오는 쉬운 방법 3가지에 대해 알아보겠습니다.

C#에서 특정 월(月)의 마지막 일자를 가져오는 쉬운 방법 3가지

특정 날짜에 대한 해당 월의 마지막 일 또는 일자를 가져오는 방법

▶ 특정 일자에 대한 해당 월의 마지막 일자를 가져오는 방법은 다양한 방법으로 구현이 가능합니다.

  • 아래 설명은 가장 기본적인 방법으로 구현한 예제 입니다.
    쉬운 설명을 위해 현재 날짜에 대한 월의 마지막 일(Day)과 일자(Date)를 가져오는 예제입니다.
DateTime now = DateTime.Now;   //현재날짜 가져옴
 
now = now.AddMonths(1);    //한 달은 더해줌.
 
string nmonth = now.ToString(“yyyy-MM-“+ “01”;    //다음 달의 1일로 해줌.
 
DateTime LastDate = DateTime.Parse(nmonth).Add.Days(1);  //1일에서 하루를 빼줌(그럼 전달의 마지막 날짜가 됨)
 
string ResultDay = LastDate.ToString(“dd”);    //달의 마지막 일자

▲ 위 소스 구문에 대한 간단한 설명입니다.

  • 특정 날짜, 여기서는 현재 날짜를 기준으로 합니다.
  • 날짜에서 한 달을 더해 줍니다.
  • 한 달이 더해진 날짜에서 년-월은 그대로 두고, 일(day)만 ’01’로 해 줍니다. 즉, 해당 월의 1일로 해 줍니다.
  • 01일에서 하루를 빼면 이전 달의 마지막 날짜가 됩니다.

위의 풀어서 구현한 구문을 한 줄로 표현하기

▶ 이해를 돕기 위해 앞 단락에서는 단계적으로 풀어서 구문을 작성하였습니다.
동일한 과정을 한 줄로 구현이 가능합니다.

string ResultDay = DateTime.Parse(DateTime.Now.AddMonths(1).ToString(“yyyy-MM-“+ “01”).AddDays(1).ToString(“dd”);
 
string LastDate = DateTime.Parse(DateTime.Now.AddMonths(1).ToString(“yyyy-MM-“+ “01”).AddDays(1).ToString(“yyyy-MM-dd”);
 

DaysInMonth 메소드를 사용하여 월의 마지막 일자 가져오기

▶ 일반적으로 앞 단락에서 설명한 다음 달 1일에서 하루를 빼는 방법으로 특정 달의 마지막 일자를 구하는 방법을 많이 사용하지만 월별 일수를 가져오는 DaysInMonth 메소드를 사용해서 간단하게 월의 마지막 일(day) 또는 일자(date)를 구할 수도 있습니다.

//마지막 일(day)
int ResultDay = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
 
//월의 마지막 일자(date)
DateTime LastDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, ResultDay);
  • DaysInMonth 메소드는 년도와 월을 인수로 주었을 때 해당 년-월의 일 수를 정수로 반환해 줍니다.
    즉, 해당 월의 마지막 일(day)를 쉽게 구할 수 있는 메소드 입니다.
  • 이렇게 구한 일 수를 DateTime형 변수를 생성하면서 년,월,일을 지정해서 해당 월의 마지막 일자를 쉽게 구할 수 있습니다.

마무리

다음 달의 1일에서 하루를 빼서 이전 달의 마지막 일자는 구할 때 기준 일자에서 한 달을 더하는 과정에서 기준 일자가 31일인 경우 결과가 어떻게 되는 확인해 보시기 바랍니다.

일반적으로 기준 일자가 2024-01-24일 때 AddMonths(1)을 해 주면 결과는 2024-02-24일 됩니다. 하지만 만약 기준 일이 2024-01-31에서 동일하게 AddMonths(1)을 해주면 결과가 어떻게 될 것이지 필히 확인해 보시기 바랍니다.
확인 결과에 따라 AddMonths(1) 과정에서 일자를 변경하는 추가 작업이 필요할 수 있습니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기