2014-03-05 2 views
0

사용자가 timepicker를 사용하여 시작 시간을 결정하는 웹 작업 표에서 & 종료 시간을 계산하고 있으며 양식에서 두 시간의 차이를 자동으로 찾고 3 번째 입력에 배치하고 싶습니다. 상자. 값을 가져 와서 밀리 초로 변환 한 다음 두 번째 숫자에서 첫 번째 숫자를 빼고 차이를 다시 인간 시간으로 변환하고 세 번째 상자에 표시 할 필요가 있음을 이해합니다. 하지만 자바 스크립트에서 시간 변환 주위에 내 머리를 포장하는 것 못 보입니다. 여기에 지금까지이 작업은 다음과 같습니다timepicker를 통한 자바 시간차

function date1math(){ 

var date1in = document.getElementById("date-1-in").value; 
var date1out = document.getElementById("date-1-out").value; 

date1in = date1in.split(":"); 
date1out = date1out.split(":"); 
var date1inDate = new Date(0, 0, 0, date1in[0], date1in[1], 0); 
var date1outDate = new Date(0, 0, 0, date1out[0], date1out[1], 0); 
var date1math = date1outDate.getTime() - date1inDate.getTime(); 
var hours = Math.floor(date1math/1000/60/60); 
date1math -= hours * 1000 * 60 * 60; 
var minutes = Math.floor(date1math/1000/60); 

return (hours < 9 ? "0" : "") + hours + ":" + (minutes < 9 ? "0" : "") + minutes; 

document.getElementById("date-1-subtotal").value = date1math(date1in, date1out); 
} 

내가 입력에서 입력 날짜-1에서의 timepicker 결과 (예를 들어 오후 5시)에서 (예를 들어 오전 9)을 timepicker 결과를 먹고 싶어 날짜 - 1을 빼고 그 차이를 날짜 -1 소계의 숫자로 지정하십시오.

+0

새 날짜 (date2-date1)를 전달하면 새 날짜의 getHours(), getMonth() 등을 사용하여 포함 된 datepart diff를 최대 1 년까지 확인할 수 있습니다. – dandavis

답변

0

아마도 입력은 hh : mm 형식 (예 : 09:54)의 문자열이며 두 문자열은 같은 날의 시간을 나타냅니다. am/pm 접미사가 포함되어 있는지 여부는 언급하지 않지만 텍스트에 있으므로 접미사라고 가정합니다. 일광 절약 변화가 무시 될 수있는 경우

는, 가장 간단한 방법은, 그 차이를 찾을 수 분으로 문자열을 변환 시간과 분, 예를 들어 다시 변환하는 것입니다 :

// Convert hh:mm[am/pm] to minutes 
function timeStringToMins(s) { 
    s = s.split(':'); 
    s[0] = /m$/i.test(s[1]) && s[0] == 12? 0 : s[0]; 
    return s[0]*60 + parseInt(s[1]) + (/pm$/i.test(s[1])? 720 : 0); 
} 

// Return difference between two times in hh:mm[am/pm] format as hh:mm 
function getTimeDifference(t0, t1) { 

    // Small helper function to padd single digits 
    function z(n){return (n<10?'0':'') + n;} 

    // Get difference in minutes 
    var diff = timeStringToMins(t1) - timeStringToMins(t0); 

    // Format difference as hh:mm and return 
    return z(diff/60 | 0) + ':' + z(diff % 60); 
} 

var t0 = '09:15am'; 
var t1 = '05:00pm'; 

console.log(getTimeDifference('09:15am', '05:00pm')); // 07:45 
console.log(getTimeDifference('09:15', '17:00'));  // 07:45 

일광 절약이 될 경우 통합하면 날짜 개체를 만들어 시간차에 사용할 수 있도록 날짜를 포함해야합니다. 위의 12 또는 24 시간 형식을 사용할 수 있습니다.

+0

고마워,이게 그랬어. 심지어 페이지에서 여러 번 반복 할 수 있도록 각 기능을 격리 할 수 ​​있었고 각 동작에 대한 변수 만 호출 할 수있었습니다. 감사! –

+0

안녕하세요 @RobG 12시 또는 12시 30 분, 오전 또는 오후 사용시 문제가 발생했습니다. 'timeStringToMins (s)'에 '12'를 '0'으로 변환 할 수있는 행이 있습니까? 나는 시도했다 "if (s [0] .value == '12') {s [0] .value == '0';}"그러나 작동하지 않는다 –

+0

Nevermind "if (s [ 0] == '12') {s [0] = '0';} "timeStringToMins 함수 –