오늘은 LocalDate, LocalTime을 사용하여 비교하도록 하겠습니다.
조건에 맞춰 데이터를 조회하다보면 데이터의 날짜를 비교하는 상황이 자주 일어납니다.
쿼리로 조회를 하는 경우도 있지만 이번에는 서비스단에서 비교를 하기로 합니다.
상품의 판매 요일(월화수목금토일)과 판매시간, 종류시간을 비교해서 조회 목록을 필터링 하기위해 작성했습니다.
private boolean checkSaleDay() {
LocalDateTime date = LocalDateTime.now();
DayOfWeek dayOfWeek = date.getDayOfWeek();
int dayOfWeekNumber = dayOfWeek.getValue(); // [1:월, 2:화, 3:수, 4:목, 5:금, 6:토, 7:일]
// 외부 서비스 판매요일 표현식:0000000 -> 일월화수목금토)
// 0: 판매중지 1: 판매
if (dayOfWeekNumber == 7) dayOfWeekNumber = 0;
String[] split = this.saleDays.split(""); // 외부 서비스 판매요일을 배열로 분리
if ("1".equals(split[dayOfWeekNumber])) {
return true;
}
return false;
}
// 데이터 형식
// this.saleStartTime : 0000
// this.saleEndTime : 2359
private boolean checkSaleTime() {
LocalTime now = LocalTime.now();
int startHour = Integer.parseInt(this.saleStartTime.substring(0, 2)); // 00
int startMinute = Integer.parseInt(this.saleStartTime.substring(2)); // 00
int endHour = Integer.parseInt(this.saleEndTime.substring(0, 2)); // 23
int endMinute = Integer.parseInt(this.saleEndTime.substring(2)); // 59
LocalTime startTime = LocalTime.of(startHour, startMinute, 0);
LocalTime endTime = LocalTime.of(endHour, endMinute, 59);
if (now.isAfter(startTime) && now.isBefore(endTime)) {
return true;
}
return false;
}
public boolean checkSaleDayAndTime() {
// 요일 확인
if (this.checkSaleDay()) {
// 판매 시간 설정 확인 -> 판매시간 설정은 옵션
if (!StringUtils.isEmpty(this.saleStartTime) && !StringUtils.isEmpty(this.saleEndTime)){
// 시간 확인
return this.checkSaleTime();
}
return true;
}
return false;
}
'프로그래밍 > java' 카테고리의 다른 글
Exception source (0) | 2019.11.13 |
---|---|
String , StringBuffer, StringBuilder (1) | 2019.11.13 |
Iterator (1) | 2019.11.13 |
Hashtable 객체 출력에서 생기는 오류 (2) | 2019.11.13 |