calendar algroithm

2011.04.05 15:58JAVA

Java Class의 Calendar Class를 활용하는건 공통적으로 똑같다.
단 View 화면에 보여줄때, 요일별 앞뒤 공간조절을 어떤 방식으로 처리 할것인가에 대한 방법이다.

각 클레스의 메소드는 API를 참조할것. 일일이 설명 안하겠음

1. 첫번째 경우의 수

cal.set(year, month, 1);


int startDay = cal.getMinimum(java.util.Calendar.DATE);
//해당 달의 마지막 날자
int endDay = cal.getActualMaximum(java.util.Calendar.DAY_OF_MONTH);
//해당 달의 시작 지점 [일(1), 월(2),화(3),수(4), 목(5), 금(6), 토(7)]
int start = cal.get(java.util.Calendar.DAY_OF_WEEK);

//다음 라인으로 이동 할지를 결정 하는 변수
int newLine = 0;

//테이블 생성
out.println("<table>");

//반복문을 돌며 시작지점 까지 빈공간을 만들어준다.
for (int index = 1; index < start; index++) {
    out.print("<TD>&nbsp;</TD>");
    newLine++;
}

//일자를 화면에 출력, 일정관리를 해줄경우 이곳을 커스터마이징, 응용 하여 사용하면 됨
for (int index = 1; index <= endDay; index++) {
    String color = "";
    if(newLine  == 0){
         color = "RED";
     }else if(newLine == 6 ){
         color  = "BLUE";
     }else{
         color  = "BLACK";
    }
    //TODO : index를 out.println("<tr><td>"+index+"</td></tr>"); 와 본인의 입맛에 맞게 구현


    //하나의 일자를 화면에 출력한뒤 라인이동 변수에 +1을 해준다.
    newLine++;
   
    //라인이동 변수가 7인경우 라인 변경을 위하 "</tr>" 을 출력한다. 라인이동후 라인이동 변수 값은 "0"으로 변경
    //index(화면에찍힌 숫자[날짜] )가 endDay(이달의 마지말날) 보다 작을경우 새로운 라인을 만들어
    //주기위해"<tr>"을  출력
    if (newLine == 7) {
        out.print("</TR>");
        if (index <= endDay) {
            out.print("<TR>");
        }
        newLine = 0;
        }
    }
}   
 
//newLine 변수가 0 혹은 7 로 끝나지 않고 중간에 머물러 있다면 뒤에 남는 공간이 있다는 뜻이다.
//그러므로 반복문 의 조건의 거짓이 될때까지 돌며  라인이동 변수값에 +1을 해준다. 
//라인이동변수값이 7이 되면 조건에 참이 아닌 거짓이 되기 때문에 반복문을 빠져 나오게 된다.
 while (newLine > 0 && newLine < 7) {
     out.print("<TD>&nbsp;</TD>");
     newLine++;
 }



2. 두번째 경우의 수
다음에... ..




3. 세번째 경우의 수

'JAVA' 카테고리의 다른 글

eclipse maven war  (0) 2012.07.24
use github 소셜 프로그래밍?  (0) 2012.07.19
calendar algroithm  (0) 2011.04.05
java component reference site  (0) 2011.03.31
Date toString() reverse Date()  (0) 2010.12.02
java reflect private 접근 하기  (0) 2010.09.13