자바 메서드 : 더 나중 날짜인지 체크
// 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 으로 대체하면 매우 안전하다.