합쭈기 programming

윤년계산 본문

Java/Spring

윤년계산

innocent_k 2015. 4. 20. 14:28

[양력]       

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;

}

'Java > Spring' 카테고리의 다른 글

pageContext.request.contextPath  (0) 2015.04.23
@ResponseBody + Json 주의사항  (0) 2015.04.23
if 축약형  (0) 2015.04.23
jsp에서 session 사용하기  (0) 2015.04.23
URL 한글 인코딩 문제  (0) 2015.04.20