윤년계산
[양력]
1. 윤년은 2월에 하루를 더하여 29일 까지로 한다.
2. 4로 나누어 떨어지는 해는 윤년으로 한다. ( 예> 2008년 )
3. 100으로 나누어 떨어지는 해는 윤년이 아니다. ( 예> 2100년 )
4. 400으로 나누어 떨어지는 해는 윤년으로 한다. ( 예> 2000년 )
[음력]
* 참고
1. 음력 월별 대소월 구분 - 한국천문연구원(http://www.kasi.re.kr) 참고
2. 윤달 정보와 윤달의 대소월 구분 - 한국천문연구원(http://www.kasi.re.kr) 참고
3. 특정 기준일의 음력과 양력 차이 일수(예> 1881년 1월 1일은 29일 차이: 양력 1월 30일이 음력 1월 1일)
* 양력을 음력으로 변환하기
1. 특정 기준일과 변환 대상일의 양력 일 수를 구한다.
2. 1의 양력 일 수에서 기준일의 음력연도의 일수를 감하며 음력 년도를 증가한다.(단, 연도보다 일 수가 적으면 중단)
3. 2의 남은 일수에서 2의 음력 년도의 월수만큼 씩 감하여 음력 월을 증가한다.
4. 3에서 남은 일수를 음력의 일수로 하여 음력일자를 구한다.
* 음력을 양력으로 변환하기
1.위의 양력을 음력으로 변환하기 공식의 반대로 계산한다.
int calc(int y, int m){
int lastday;
if(m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 ||m == 12)
lastday = 31;
else if(m == 2){ //윤년계산
if ((y%4 == 0) && ((y%100 !=0)|| (y%400 ==0)))
lastday = 29;
else
lastday = 28;
}
else
lastday = 30;
return lastday;
}