html input 태그의 자바스크립트 변수저장 질문입니다..

조회수 830회

html input태그에서 속성값 time으로 하고 사용자에게 오전이든 오후든 시간을 입력받아 그 2개의 시간의 차를 구하고 싶습니다.

//<label for="start""><b>시작</b> :</label>
<input type="time" id="start" />

<label for="dismiss"><b>종료</b> :</label>
<input type="time" id="dismiss" />

<p><button onclick="cal(); return false;" id="calbt">계산하기</button></p>
//function cal() {
            var start = $("#start").val();
            var dimiss = $("#dimiss").val();
            Number(start);
            Number(dimiss);

            var worktime = dismiss - start;

            resoltdv1 = "Test 계산 = " + worktime;

            $("#resoltdv1").html(resoltdv1);
        }

제가 아는 선은 여긴데 이렇게 되면 시작시간이 오전 10:00일경우 그냥 1000 이렇게 받아와서 종료시간이 20:30이라면 2030 빼기 1000 이렇게 되더라고요// 이렇게 되는게 맞는 건지.. 전 몇시간 차이가 나는지 알고싶은데 그냥 저렇게 보고 10시간30분이구나 하고 알아야 되는건지.. 궁금합니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 작성하신 코드에 오타가 있습니다. dimiss <> dismiss

    20:30 에서 10:00 를 뺄때는 받아내림이 없어서 문제가 발생하지 않았지만 20:30 에서 10:50 를 뺄때는 시간에서 분으로 60만큼 받아서 빼야하는데 그대로 뺄 경우 9:80이 되버립니다.

    이러한 경우를 막기위해선 시간을 분으로 변경한 후 뺄셈 후 다시 시간을 복구하시면 됩니다. 아래는 계산 예제 코드이니 확인해보시기 바랍니다.

    var start = 1050;
    var end = 2030;
    
    var subStart = Math.floor(start/100)*60+start%100;
    var subEnd = Math.floor(end/100)*60+end%100;
    var subWorktime = subEnd - subStart;
    
    var worktime = Math.floor(subWorktime/60)*100+subWorktime%60
    
    console.log("틀린 답 : "+(end-start))  // 틀린 답 : 980
    console.log("올바른 답 : "+worktime)  // 올바른 답 : 940
    

    Math.floor는 소수점을 버리는 함수입니다.

    감사합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

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

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)