시간카운트 자바스크립트 문의 채택완료

Copy
<div id=count>
    <span id="counter1"></span>
    <p>일</p>
    <SPAN id="counter2"></SPAN>
    <p>시간</p>
    <SPAN id="counter3"></SPAN>
    <p>분</p>
    <SPAN id="counter4"></SPAN>
    <p>초</p>
</div>

 

 

<SCRIPT language=JavaScript> 

    function getTime() { 
    now = new Date(); 
    dday = new Date(2019,02,01,10,30,59); 
    // 원하는 날짜, 시간 정확하게 초단위까지 기입.
    days = (dday - now) / 1000 / 60 / 60 / 24; 
    daysRound = Math.floor(days); 
    hours = (dday - now) / 1000 / 60 / 60 - (24 * daysRound); 
    hoursRound = Math.floor(hours); 
    minutes = (dday - now) / 1000 /60 - (24 * 60 * daysRound) - (60 * hoursRound); 
    minutesRound = Math.floor(minutes); 
    seconds = (dday - now) / 1000 - (24 * 60 * 60 * daysRound) - (60 * 60 * hoursRound) - (60 * minutesRound); 
    secondsRound = Math.round(seconds); 

    document.getElementById("counter1").innerHTML = daysRound;
    document.getElementById("counter2").innerHTML = hoursRound;
    document.getElementById("counter3").innerHTML = minutesRound; 
    document.getElementById("counter4").innerHTML = secondsRound; 
    newtime = window.setTimeout("getTime();", 1000); 
    } 

</SCRIPT>
<SCRIPT>getTime()</SCRIPT>

 

위에가 구글에서 찾은 자바스크립트인데

한번에 div안에 넣는방식말고 일부로 숫자 하나하나에 스타일을 줘야하는 상황이라서 저렇게 따로따로 했습니다.

근데 시, 분, 초는 잘 나오는데 남은 일(day)은 어떻게 계산해야하는지 모르겠어요 ㅠㅠ

 

document.getElementById("counter1").innerHTML = daysRound;

 

이렇게 했는데 오늘이 29일이고 2월 1일까지 3일남았는데 30일 남았다고 뜨네요 ㅠㅠ 계산이 잘못된거같은데 도와주세요 ㅠㅠ

답변 1개

Copy
<div id="count">
    <span id="counter1"></span>
    <p>일</p>
    <span id="counter2"></span>
    <p>시간</p>
    <span id="counter3"></span>
    <p>분</p>
    <span id="counter4"></span>
    <p>초</p>
</div>

<script>
//디데이 종료 일자 설정
var countDownDate = new Date("January 31, 2019 06:00:00").getTime();

//1초마다 갱신되도록 함수 생성,실행
var x = setInterval(function() {

    // 오늘 날짜 등록
    var now = new Date().getTime();
    // 종료일자에서 현재일자를 뺀 시간
    var distance = countDownDate - now;
    // 각 변수에 일, 시, 분, 초를 등록
    var d = Math.floor(distance / (1000 * 60 * 60 * 24));
    var h = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    var m = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
    var s = Math.floor((distance % (1000 * 60)) / 1000);

    document.getElementById("counter1").innerHTML = d;
    document.getElementById("counter2").innerHTML = h;
    document.getElementById("counter3").innerHTML = m;
    document.getElementById("counter4").innerHTML = s;
});
</script>

 

이렇게 했더니 잘되네요 ㅎㅎ

혼자 질문하고 혼자 답하지만 다른 분들도 필요하시면 참고해주세요!

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고