0

두 개의 Bootstrap Datetime 선택기를 HTML5 형식으로 추가했습니다. 지금까지 컨트롤의 change 이벤트를 사용하여 각 picker의 DateTime 값을 캡처 할 수 있습니다.Javascript에서 두 날짜 선택 도구 값 사이의 시간 간격을 가져 오는 방법은 무엇입니까?

이제는 DateTime 선택기 간의 시간 간격 차이를 var로 저장해야하는 경우가 있습니다.

나는이 ask here과 비슷한 예를 보았습니다. 그러나 아래의 간단한 구현은 실제 시간 선택기 값이 변경 될 때 예상 시간 간격 차이 대신 "Nan"값을 경고합니다.

enter image description here

질문 :

이 어떻게 자바 스크립트 또는 JQuery와 두 날짜 선택 값 사이의 시간 범위를 계산할 수있다?

코드의 요점은 : 당신이 순간을 사용하고 있기 때문에

var start; 
var actual; 

$("#OutageStartDisplay").on("dp.change", function (e) { 
    start = $('#OutageStart').val(moment(e.date).format()); 
}); 


//On change of the ActualDisplay datetime picker 
//update's the Actual hidden field with the datetime. 
$("#ActualDisplay").on("dp.change", function (e) { 
    actual = $('#Actual').val(moment(e.date).format()); 

    //If the actual is set, calculate the outage duration 
    var timeDiff = Math.abs(start - actual); 
    var diffDays = Math.ceil(timeDiff/(1000 * 3600 * 24)); 
    alert(diffDays); 

}); 
+0

당신이 그들이 설정하고 이후 모든 변수의 값을 기록 시도? 아마 그들 중 하나는 당신이 기대하는 타입이 아닙니다. –

답변

1

, 당신은 시간 차이를 얻을 수 moment.diff를 사용할 수 있습니다.

코드는 또한 약간은 $("whatever").val(something) 할 때, 당신은 something"whatever"의 값을 설정하고, 도청하고 $("whatever")이 아닌 값을 반환 보인다. 따라서 다른 JQuery 객체에서 JQuery 객체를 뺍니다. 그러나 비록 그것이 발을 돌려 주었다고해도, 당신의 발은 끈이기 때문에 또한 빼낼 수 없습니다.

그래서 당신은 아마이 대신 원하는 :

var start; 
var actual; 

$("#OutageStartDisplay").on("dp.change", function (e) { 
    start = moment(e.date); 
    $('#OutageStart').val(start.format()); 
}); 

$("#ActualDisplay").on("dp.change", function (e) { 
    actual = moment(e.date); 
    $('#Actual').val(actual.format()); 

    //If the actual is set, calculate the outage duration 
    alert(actual.diff(start)); 
}); 
+0

Ok 이것은 밀리 초 단위로 차이를 출력하는 것 같습니다. 시간 내에 이것을 출력하는 캐스트가 있습니까? –

+1

http://momentjs.com/docs/#/displaying/difference/ 측정 단위를 moment.diff에 전달할 수 있습니다. 'actual.diff (start, "hours")' –

+0

멋지다. 차이점을 일 : HH : MM 문자열 또는 JS를 통해 timepspan으로 변환 할 수있는 방법이 있습니까? 예를 들어, 1 일, 4 시간, 45 분간 –

관련 문제