2014-06-05 2 views
-4

24 시간 형식의 두 값의 시차는 어떻게 구합니까? 예를 들어24 시간 형식의 시차 찾기

var time1 = 22:30:00, 
    time2 = 06:30:00; 

차이가 와야

+2

왜 대답은 16시 0분 0초이어야한다? –

+0

그 시간 문자열을':'로 나눈 다음 수학을하고 수학 결과를 합치십시오. – Epsil0neR

+0

나는 수학 함수를 사용해 보았지만, 출력은 08:00:00이 아닌 -16 : 00 : 00으로 표시합니다. – user3710962

답변

-1

당신이 C#에서 DIFF 기능을 원하는 경우 08:00:00 같은;

DateTime oldDate= "06/01/2014 12:00:00 AM"; 
TimeSpan timeDiff = DateTime.Now - oldDate; 

int diff =Convert.ToInt32(timeDiff.TotalHours); 

스크립트 블록이 도움이되는 JavaScript로 원한다면;

function diffDateTime(startDT, endDT) { 

     if (typeof startDT == 'string' && startDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}[amp ]{0,3}$/i)) { 
      startDT = startDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}/); 
      startDT = startDT.toString().split(':'); 
      var obstartDT = new Date(); 
      obstartDT.setHours(startDT[0]); 
      obstartDT.setMinutes(startDT[1]); 
      obstartDT.setSeconds(startDT[2]); 
     } 
     else if (typeof startDT == 'string' && startDT.match(/^now$/i)) var obstartDT = new Date(); 
     else if (typeof startDT == 'string' && startDT.match(/^tomorrow$/i)) { 
      var obstartDT = new Date(); 
      obstartDT.setHours(24); 
      obstartDT.setMinutes(0); 
      obstartDT.setSeconds(1); 
     } 
     else var obstartDT = new Date(startDT); 

     if (typeof endDT == 'string' && endDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}[amp ]{0,3}$/i)) { 
      endDT = endDT.match(/^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}/); 
      endDT = endDT.toString().split(':'); 
      var obendDT = new Date(); 
      obendDT.setHours(endDT[0]); 
      obendDT.setMinutes(endDT[1]); 
      obendDT.setSeconds(endDT[2]); 
     } 
     else if (typeof endDT == 'string' && endDT.match(/^now$/i)) var obendDT = new Date(); 
     else if (typeof endDT == 'string' && endDT.match(/^tomorrow$/i)) { 
      var obendDT = new Date(); 
      obendDT.setHours(24); 
      obendDT.setMinutes(0); 
      obendDT.setSeconds(1); 
     } 
     else var obendDT = new Date(endDT); 
     var secondsDiff = (obendDT.getTime() - obstartDT.getTime()) > 0 ? (obendDT.getTime() - obstartDT.getTime())/1000 : (86400000 + obendDT.getTime() - obstartDT.getTime())/1000; 
     secondsDiff = Math.abs(Math.floor(secondsDiff)); 

     var oDiff = {};  // object that will store data returned by this function 

     oDiff.days = Math.floor(secondsDiff/86400); 
     oDiff.totalhours = Math.floor(secondsDiff/3600);  // total number of hours in difference 
     oDiff.totalmin = Math.floor(secondsDiff/60);  // total number of minutes in difference 
     oDiff.totalsec = secondsDiff;  // total number of seconds in difference 

     secondsDiff -= oDiff.days * 86400; 
     oDiff.hours = Math.floor(secondsDiff/3600);  // number of hours after days 

     secondsDiff -= oDiff.hours * 3600; 
     oDiff.minutes = Math.floor(secondsDiff/60);  // number of minutes after hours 

     secondsDiff -= oDiff.minutes * 60; 
     oDiff.seconds = Math.floor(secondsDiff);  // number of seconds after minutes 

     return oDiff; 
    } 

사용법;

var objDiff = diffDateTime('06/01/2014 12:00:00 AM', 'now'); 
var dtdiff = objDiff.days + ' days, ' + objDiff.hours + ' hours, ' + objDiff.minutes + ' minutes, ' + objDiff.seconds + ' seconds'; 

중요 : 당신은 날짜 시간 형식에 있어야 기억해야 EN-US 형식 일/월/년시 : 분 : 초.

+0

그는 자바 스크립트로 원합니다. –

+0

은 diff 함수가 아닌 두 날짜간에 차이점을 찾아야합니다. 감사 – user3710962

0

난 당신이 JQuery와에게 date.js 라이브러리를 사용해야하고 아래처럼 그 시간 범위 클래스를 사용할 수있는 제안 :

var future = Date.parseExact("22:30:00", "hh:mm:ss"); 

var past = Date.parseExact("06:30:00", "hh:mm:ss"); 

var span = new TimeSpan(future - now); 

와 시간에 차이는 다음과 같습니다 :

span.getHours() + ":" span.getMinutes() + ":" span.getSeconds() 
1

당신은 많이 있습니다 전체 날짜 개체를 사용하여이 유형의 수학을 수행하는 것이 더 좋으며, 그렇지 않으면 시작 시간이 완료 시간보다 작 으면 다음 날에 있어야하는 등의 시간 값을 추측해야합니다.

다음은 두 가지 도우미 기능과 차이를 가져 오는 주요 기능을 포함합니다.

// Convert h:m:s to seconds 
function hmsToSecs(s) { 
    var b = s.split(':'); 
    return b[0]*3.6e3 + b[1]*60 + +b[2]; 
} 

// Convert seconds to hh:mm:ss 
function secsToHMS(n) { 
    function z(n){return (n<10? '0':'') + n;} 
    var sign = n < 0? '-' : ''; 
    n = Math.abs(n); 
    return sign + z(n/3.6e3|0) + ':' + z(n%3.6e3/60|0) + ':' + z(n%60); 
} 

// Calculate time difference between two times 
// start and finish in hh:mm:ss 
// If finish is less than start, assume it's the following day 
function timeDiff(start, finish) { 
    var s = hmsToSecs(start); 
    var f = hmsToSecs(finish); 

    // If finish is less than start, assume is next day 
    // so add 24hr worth of seconds 
    if (f < s) f += 8.64e4; 

    return secsToHMS(f - s); 
} 

console.log(timeDiff('22:30:00','06:30:00')); // 08:00:00 
console.log(timeDiff('06:30:00','22:30:00')); // 16:00:00 

전체 날짜 객체를 사용하여 수행 할 수 있습니다

var start = new Date(2014,5,5,22,30); // 22:30:00 on 5 June 2014 
var finish = new Date(2014,5,6,6,30); // 06:30:00 on 6 June 2014 

// Subtract dates to get difference in ms, convert to seconds and format 
console.log(secsToHMS((finish - start)/1000)); // 08:00:00 
console.log(secsToHMS((start - finish)/1000)); // -08:00:00