써먹는 웹개발
[Java]Quartz를 이용하여 스케쥴러 다음시간까지 남은시간 구하기 본문
1. pom.xml파일에 Quartz Dependency 추가
<!-- Quartz framework --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> |
2. java의 db에서 cron expression을 받아 다음 시간에 현재 시간을 뺀다.
ex) cron expression 예시 : 0 0/1 * ? * * *
cron expression 참고사이트 : https://www.freeformatter.com/cron-expression-generator-quartz.html
final int[] TIME_UNIT = {86400, 3600, 60, 1}; final String[] TIME_UNIT_NAME = {"일 ", "시 ", "분 ", "초"}; List<Map<String, Object>> list = 매퍼명.selectXXXList(param); for(int i=0;i<list.size();i++) { if(list.get(i).get("EXPRESSION") == null || list.get(i).get("EXPRESSION") == "") { continue; } CronExpression cronExpression = new CronExpression(list.get(i).get("EXPRESSION").toString()); // 유효한 크론식일 경우 다음 실행날짜가 리턴 // 유효하지 않는 크론식일 경우 cron valid error 리턴 Date nextTime = cronExpression.getNextValidTimeAfter(new Date()); long diff = Math.abs(nextTime.getTime() - new Date().getTime()) / 1000;
// 다음 실행날짜 포맷 String tmp = ""; int remainSec = Integer.parseInt(String.valueOf(diff)); for(int j=0; j<TIME_UNIT.length; j++){ tmp += ((diff/TIME_UNIT[j])>=10?diff/TIME_UNIT[j]:"0"+diff/TIME_UNIT[j]) + TIME_UNIT_NAME[j]; diff %= TIME_UNIT[j]; }
// 남은 시간 필드에 값 추가 list.get(i).put("NEXT_VALID_DATE", tmp); } |
3. 시트에 출력한 결과
감사합니다.
'웹개발 > Java & Jsp' 카테고리의 다른 글
[jsp] 이미지를 파일 스트림으로 읽어서 보여주기 (0) | 2018.07.02 |
---|---|
[Java / 파일 업로드] 업로드할 파일 용량 확인 (0) | 2018.06.20 |
[Java] 숫자를 문자화(int to String), 문자를 숫자화(String to int) (0) | 2018.06.18 |
[Java/Poi]엑셀 다운로드시 해당 열의 text 포맷 스타일 지정 방법 (0) | 2018.06.05 |
[Java] 엑셀에서 정수 입력하고 업로드할 때 뒤에 붙는 '.0'을 제거하는 방법 (0) | 2018.05.30 |