반응형
개발을 하다 보면 월별 일 평균 값을 구하거나 할 때 월말 일자를 구해야 할 일이 생긴다.
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};
반응형
'C#' 카테고리의 다른 글
[C# 문제] 두 수를 비교해보자. (0) | 2021.10.06 |
---|---|
[C# 문제]Hello World! 를 출력하시오. (0) | 2021.10.06 |
C# 폴더에 있는 파일을 복사하는 소스 예제 (0) | 2021.07.08 |
배열에 있는 String 값을 연결하는 방법 (0) | 2021.05.25 |
C# 대칭수(회문수 - Palindromic number ) 인지 확인하는 소스 (0) | 2020.10.26 |
댓글