자바 메서드 : 더 나중 날짜인지 체크

자바 메서드 : 더 나중 날짜인지 체크

// getLaterTimeString : 더 나중 날짜 가져오기

private String getLaterTimeString(String oldTime, String newTime) {
  
  try {
   if (oldTime == null || oldTime.length() == 0) {
    if (newTime == null || newTime.length() == 0) {
     return “”;
    } else {
     return newTime;
    }
   }
   
   if (newTime == null || newTime.length() == 0) {
    return oldTime;
   }
   
   String oldTrimed = oldTime.replace(” “, “”).trim();
   String newTrimed = newTime.replace(” “, “”).trim();
   
   int oldFront = Integer.parseInt(oldTrimed.substring(0, 8));
   int newFront = Integer.parseInt(newTrimed.substring(0, 8));
   
   if (oldFront > newFront) {
    return oldTime;
    
   } else if (oldFront < newFront) {
    return newTime;
    
   } else {
    
    int oldBack = Integer.parseInt(oldTrimed.substring(8));
    int newBack = Integer.parseInt(newTrimed.substring(8));
    
    if (oldBack > newBack) {
     return oldTime;
     
    } else if (oldBack < newBack) {
     return newTime;
    }
   }
     
  } catch (Exception e) {
   _logger.error(“getLaterTimeString Error : ” + e.getMessage());
   _logger.exception(e);
   return oldTime;
  }
  
  return oldTime;
 }

————————————————–

// newTimeIsLater: 뒤의 Time이 더 나중 날짜인지 체크

// newTime(두번째 아규먼트)이 oldTime(첫번째 아규먼트)보다 나중인지 검사. 비교 불가이거나 에러 발생시 null 을 리턴한다.
private Boolean newTimeIsLater(String oldTime, String newTime) {
  
  try {
   if (oldTime == null || oldTime.length() == 0) {
    if (newTime == null || newTime.length() == 0) {
     return null;
    } else {
     return true;
    }
   }
   
   if (newTime == null || newTime.length() == 0) {
    return false;
   }
   
   String oldTrimed = oldTime.replace(” “, “”).trim();
   String newTrimed = newTime.replace(” “, “”).trim();
   
   int oldFront = Integer.parseInt(oldTrimed.substring(0, 8));
   int newFront = Integer.parseInt(newTrimed.substring(0, 8));
   
   if (oldFront > newFront) {
    return false;
    
   } else if (oldFront < newFront) {
    return true;
    
   } else {
    
    int oldBack = Integer.parseInt(oldTrimed.substring(8));
    int newBack = Integer.parseInt(newTrimed.substring(8));
    
    if (oldBack > newBack) {
     return false;
     
    } else if (oldBack < newBack) {
     return true;
    }
   }
     
  } catch (Exception e) {
   _logger.error(“newTimeIsLater Error : ” + e.getMessage());
   _logger.exception(e);
   return null;
  }
  
  return null;
 }

————————————————–

DB로부터 길이가 같은 날짜(20XX0000 000000) 2개를 SELECT 해서 비교한다는 전제하에 만들었음.

DB에 값이 잘못들어가 있을 확률이 존재한다면, 예를 들어 8자리 미만의 값이 섞여 들어가 있다면 substring에서 오류가 날것임.

DB를 신뢰할 수 없다면 substring 직전에 길이 비교를 선행해서 길이가 큰 쪽이 크다고 판단내리고,

로그에 길이가 다르다고 찍어주는 쪽으로 보완하는게 안전할 듯.

cf) substring을 에러가 나지 않는 substring 으로 대체하면 매우 안전하다.

참고url : http://blog.naver.com/bb_/221066653530