2011년 6월 30일 목요일

날짜함수-2

 
/**
   * 두날짜 사이의 일수를 리턴
   * @param fromDate yyyyMMdd 형식의 시작일
   * @param toDate yyyyMMdd 형식의 종료일
   * @return 두날짜 사이의 일수
   */
  public static int getDiffDayCount(String fromDate, String toDate) {
   SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
   try {
    return (int) ((sdf.parse(toDate).getTime() - sdf.parse(fromDate)
      .getTime()) / 1000 / 60 / 60 / 24);
   } catch (Exception e) {
    return 0;
   }
  }
  /**
   * 현재 날짜에서 변경 요청한  날짜 더하거나 빼서 리턴
   * @param 숫자(일수) 집어넣기
   * @return yyyyMMdd 형식의 날짜가 담긴 날짜
   */
  public static String previosDate(int sub){
    SimpleDateFormat fmt=new SimpleDateFormat("yyyyMMdd");
    java.util.Calendar c=java.util.Calendar.getInstance();
    java.util.Date date=null;
   
    try{
      date=fmt.parse(fmt.format(new Date()));
       c.setTime(date);
       c.add(java.util.Calendar.DAY_OF_YEAR, sub);
    
    }catch(Exception ex){
    }
    return fmt.format(c.getTime());
    
  }
  /**
   * 현재 날짜에서 변경 요청한  월 더하거나 빼서
   * @param 숫자(월수) 집어넣기
   * @return yyyyMMdd 형식의 날짜가 담긴 날짜
   */
  public static String previosMonth(int sub){
    SimpleDateFormat fmt=new SimpleDateFormat("yyyyMMdd");
    java.util.Calendar c=java.util.Calendar.getInstance();
    java.util.Date date=null;
   
    try{
      date=fmt.parse(fmt.format(new Date()));
       c.setTime(date);
       c.add(java.util.Calendar.MONTH, sub);
    
    }catch(Exception ex){
    }
    return fmt.format(c.getTime());
    
  }
  /**
   * 시작/종료년이 없을 경우 2년전/올해로 셋팅한다.
   * @param toDate yyyy 형식의 날짜
   * '@param dateFlag 시작일 혹은 종료일 구분
   * '@param dateKubun Y/M/D
   * @return yyyy 형식의 날짜
   */
  public static String getMakeYear(String nowDate, String dateFlag, String dateKubun) {
   String resultDate = "";
  
   //시작, 종료년이 없을 경우
   if (nowDate.equals("")) {
    // 2년전 가져옴
    if (dateFlag.equals("S")) {
     if (dateKubun.equals("Y")) {
      resultDate = Integer.toString(Integer.parseInt(nowYearGet()) - 2);
     } else {
      resultDate = previosMonth(-11);
      resultDate = resultDate.substring(0, 4);
     }
    } else {
     resultDate = nowYearGet();
    }
   } else {
    resultDate = nowDate;
   }
   return resultDate;
  }
  /**
   * 시작/종료월이 없을 경우 11개월전/이번달로 셋팅한다.
   * @param toDate yyyyMM 형식의 날짜
   * '@param dateFlag 시작일 혹은 종료일 구분
   * @return yyyyMM 형식의 날짜
   */
  public static String getMakeMonth(String nowDate, String dateFlag) {
   String resultDate = "";
  
   //시작, 종료월이 없을 경우
   if (nowDate.equals("")) {
    // 11개월전 가져옴
    if (dateFlag.equals("S")) {
     resultDate = previosMonth(-11);
     resultDate = resultDate.substring(4, 6);
    } else {
     resultDate = nowMonthGet();
    }
   } else {
    resultDate = nowDate;
   }
   return resultDate;
  }
  /**
   * 시작/종료일이 없을 경우 한달전/하루전으로 셋팅한다.
   * @param toDate yyyyMMdd 형식의 날짜
   * '@param dateFlag 시작일 혹은 종료일 구분
   * @return yyyyMMdd 형식의 날짜
   */
  public static String getMakeDate(String nowDate, String dateFlag) {
   String resultDate = "";
  
   //시작, 종료일이 없을 경우
   if (nowDate.equals("")) {
    // 한달/하루전 날짜 가져옴
    if (dateFlag.equals("S")) {
     resultDate = previosMonth(-1);
    } else {
     resultDate = previosDate(-1);
    }
   } else {
    resultDate = nowDate;
   }
   return resultDate;
  }
  /**
   * 날짜를 8자리로 만들어서 반환
   * 시작일일 경우 '00' 혹은 '0000'을 붙인다.
   * 종료일일 경우 '99' 혹은 '9999'을 붙인다.
   * @param toDate yyyyMMdd 혹은 yyyyMM 혹은 yyyy 형식의 날짜
   * '@param dateFlag 시작일 혹은 종료일 구분
   * @return yyyyMMdd 혹은 yyyyMM 혹은 yyyy 형식의 날짜가 담긴 배열
   */
  public static String getMakeLength(String nowDate, String dateFlag) {
   String resultDate = "";
  
   if (dateFlag.equals("S")) {
    resultDate = (nowDate + "00000101").substring(0, 8);
   } else {
    resultDate = (nowDate + "99991231").substring(0, 8);
   }
   return resultDate;
  }
  /**
   * 날짜를 규칙에 맞게 변환
   * dateFlag가 'Y'일 경우 앞 두자리를 반환
   * dateFlag가 'M'일 경우 중간 두자리를 반환
   * dateFlag가 'D'일 경우 끝 두자리를 반환
   * @param toDate yyyyMMdd 형식의 날짜
   * @return yyyy 혹은 MM 혹은 dd 형식의 날짜가
   */
  public static String getChangeDate(String nowDate, String dateFlag) {
   String resultDate = "";
  
   if (dateFlag.equals("Y")) {
    resultDate = nowDate.substring(0,4);
   } else if (dateFlag.equals("M")) {
    resultDate = nowDate.substring(4,6);
   } else if (dateFlag.equals("D")) {
    resultDate = nowDate.substring(6,8);
   }
   return Integer.toString(Integer.parseInt(resultDate));
  }

댓글 없음:

댓글 쓰기