써먹는 웹개발

[Java]Quartz를 이용하여 스케쥴러 다음시간까지 남은시간 구하기 본문

웹개발/Java & Jsp

[Java]Quartz를 이용하여 스케쥴러 다음시간까지 남은시간 구하기

kmhan 2018. 6. 18. 19:49


728x90
반응형

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. 시트에 출력한 결과



감사합니다.



728x90
반응형


Comments