본문 바로가기
C#

c# 월말일자 구하기

by 샤나엘 2021. 9. 27.
반응형

개발을 하다 보면 월별 일 평균 값을 구하거나 할 때 월말 일자를 구해야 할 일이 생긴다.

 

C#에서는 Datetime.DaysInMonth라는 함수를 재공하고 있어서 쉽게 해당 값을 구해서 쓸 수 있다.

 

해당 함수의 내부 소스코드는 아래와 같다.

public static int DaysInMonth(int year, int month) {
            if (month < 1 || month > 12) throw new ArgumentOutOfRangeException("month", Environment.GetResourceString("ArgumentOutOfRange_Month"));
            Contract.EndContractBlock();
            // IsLeapYear checks the year argument
            int[] days = IsLeapYear(year)? DaysToMonth366: DaysToMonth365;
            return days[month] - days[month - 1];
        }


        public static bool IsLeapYear(int year) {
            if (year < 1 || year > 9999) {
                throw new ArgumentOutOfRangeException("year", Environment.GetResourceString("ArgumentOutOfRange_Year"));
            }
            Contract.EndContractBlock();
            return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
        }

        private static readonly int[] DaysToMonth365 = {
            0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};
        private static readonly int[] DaysToMonth366 = {
            0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366};
반응형

댓글