온 코딩

[게시판] JQuery로 타이머 만들기 - 본문

FINAL PROJECT

[게시판] JQuery로 타이머 만들기 -

SummerON 2021. 7. 18. 23:42

DB에 저장된 값 : auction 등록 시간! (LocalDateTime)

 

Auction은 한시간만 진행하고 끝나야 함 

- 남은 시간을 타이머로 보여줄 예정 (제이쿼리로 타이머 만들기)

- 입력 될 때 @Scheduler 을 통해 한시간 후에 state를 0에서 1로 바뀌게 함 

==> 클래스를 더 만들어야 해서 수정! list를 불러올 때 state를 바꿔주는 모듈을 하나 더 만들 예정 

 

1. serviceImple - 타이머 함수 

    @Override
    public long timer(Optional<AuctionList> auction) {

        LocalDateTime time = auction.get().getRegDate(); // 등록시간 불러오기
        Date dTime = java.sql.Timestamp.valueOf(time); // 계산하기 위해 형 변형

        SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
        Calendar cal = Calendar.getInstance();
        Date now = cal.getTime(); // 지금 시간
        cal.setTime(dTime);
        cal.add(Calendar.HOUR, 1); // 등록시간 +1 : 경매 완료 시간
        Date endTime = cal.getTime();
        long sec = (endTime.getTime()-now.getTime())/1000; // 경매완료시간 - 지금시간 (초)
        return sec;
    }

지금 시간을 받아와서 등록시간을 통해 마감시간을 알아내고 마감시간까지 남은 초 계산

시간 덧뺄셈이 가능하도록 형 변환 

 

2. jQuery - 받아온 남은 시간 타이머로 출력하기

<!-- 타이머 만들기 -->
<div id="timerDemo"></div>
<input th:type="button" th:value="${sec}">
[[${sec}]]

<script th:inline="javascript">
 var time = [[${sec}]];
 var min = "";
 var sec = "";

 var x = setInterval(function (){
    min = parseInt(time/60);
    sec = time%60;
    document.getElementById("timerDemo").innerHTML = min+"분 "+sec+"초";
    time --;

    if(time<0){
        clearInterval(x);
        document.getElementById("timerDemo").innerHTML = "경매 완료";
    }

 }, 1000);
</script>

interval을 이용해 1초마다 계산값을 갱신함 

 

3. 입력 한시간 후에 state 상태 변화 시키기

 

Comments