초보프로그래머만..

JAVA-입력받은날짜의 해당주(week)날짜구하기

세피롯스 2010. 2. 22. 10:49

특정날짜구하기같은 경우 쿼리로 구해오는 경우가 많은데
어떨땐 자바에서 구해야할때가 있다.
입력받은날짜로 해당주의 날짜구하기 (ex. 20100203의 경우 20100201,20100202,20100202,20100203,20100204,20100205,20100206,20100207를 스트링배열로 리턴받음)


public String[] weekCalendar(String yyyymmdd) throws Exception{
  
  Calendar cal = Calendar.getInstance();
  int toYear = 0;
  int toMonth = 0;
  int toDay = 0;
  if(yyyymmdd == null || yyyymmdd.equals("")){   //파라메타값이 없을경우 오늘날짜
   toYear = cal.get(cal.YEAR); 
   toMonth = cal.get(cal.MONTH)+1;
   toDay = cal.get(cal.DAY_OF_MONTH);
   
   int yoil = cal.get(cal.DAY_OF_WEEK); //요일나오게하기(숫자로)

   if(yoil != 1){   //해당요일이 일요일이 아닌경우
    yoil = yoil-2;
   }else{           //해당요일이 일요일인경우
    yoil = 7;
   }
   cal.set(toYear, toMonth-1, toDay-yoil);  //해당주월요일로 세팅
  }else{
   int yy =Integer.parseInt(yyyymmdd.substring(0, 4));
   int mm =Integer.parseInt(yyyymmdd.substring(4, 6))-1;
   int dd =Integer.parseInt(yyyymmdd.substring(6, 8));
   cal.set(yy, mm,dd);
  }
  String[] arrYMD = new String[7];
  
  int inYear = cal.get(cal.YEAR); 
  int inMonth = cal.get(cal.MONTH);
  int inDay = cal.get(cal.DAY_OF_MONTH);
  int yoil = cal.get(cal.DAY_OF_WEEK); //요일나오게하기(숫자로)
  if(yoil != 1){   //해당요일이 일요일이 아닌경우
      yoil = yoil-2;
   }else{           //해당요일이 일요일인경우
      yoil = 7;
   }
  inDay = inDay-yoil;
  for(int i = 0; i < 7;i++){
   cal.set(inYear, inMonth, inDay+i);  //
   String y = Integer.toString(cal.get(cal.YEAR)); 
   String m = Integer.toString(cal.get(cal.MONTH)+1);
   String d = Integer.toString(cal.get(cal.DAY_OF_MONTH));
   if(m.length() == 1) m = "0" + m;
   if(d.length() == 1) d = "0" + d;
   
   arrYMD[i] = y+m +d;
   System.out.println("ymd ="+ y+m+d);
   
  }
  
  return arrYMD;
 }