2013-08-26 13 views
5

Próbowałem uzyskać różnicę czasu między 2 różnymi czasami i otrzymuję ją poprawnie przez wiele godzin i minut. Ale jeśli drugi jest większy niż pierwszy, otrzyma problem. Wyświetlany jest czas z danymi negatywnymi.Uzyskiwanie różnicy czasu między dwoma razy w javascript

np

Start time : 00:02:59 
End time : 00:05:28 

Jeśli otrzymuję różnicę między początkiem i końcem czasu

00:05:28 - 00:02:59 = 00:3:-31 

która nie jest poprawna wartość. Używam następującego skryptu do uzyskania tej wartości.

var start_time = $("#startTime").val(); 
var end_time = $("#endTime").val(); 
var startHour = new Date("01/01/2007 " + start_time).getHours(); 
var endHour = new Date("01/01/2007 " + end_time).getHours(); 
var startMins = new Date("01/01/2007 " + start_time).getMinutes(); 
var endMins = new Date("01/01/2007 " + end_time).getMinutes(); 
var startSecs = new Date("01/01/2007 " + start_time).getSeconds(); 
var endSecs = new Date("01/01/2007 " + end_time).getSeconds(); 
var secDiff = endSecs - startSecs; 
var minDiff = endMins - startMins; 
var hrDiff = endHour - startHour; 
alert(hrDiff+":"+minDiff+":"+secDiff); 

ktoś proszę mi powiedzieć jak dostać różnicę czasu między dwoma czasami poprawnie, nawet biorąc pod uwagę, ze sekund

+0

możesz przekonwertować je na sekundy pierwsze, a nawet lepiej na Milisa econds, zrób swoją arytmetyczną i przekonwertuj je z powrotem do swojego formatu. – kangoroo

+0

ale jeśli to zrobię, wpłynie to również na minutę. Chcę uzyskać czas z formatem "HH: MM: SS" – Kalai

+0

Ostatnie wersje ffmpeg mają opcję '-to', więc nie trzeba obliczyć czasu dla parametru' -t'. Zobacz: http://ffmpeg.org/ffmpeg-all.html#Main-options – slhck

Odpowiedz

-6

Spróbuj zrobić to

var date1 = new Date(2000, 0, 1, 9, 0); // 9:00 AM 
    var date2 = new Date(2000, 0, 1, 17, 0); // 5:00 PM 
    if (date2 < date1) { 
     date2.setDate(date2.getDate() + 1); 
    } 
    var diff = date2 - date1; 
    // 28800000 milliseconds (8 hours) 

można następnie przekształcić milisekund godziny, minuty i sekundy tak:

var msec = diff; 
    var hh = Math.floor(msec/1000/60/60); 
    msec -= hh * 1000 * 60 * 60; 
    var mm = Math.floor(msec/1000/60); 
    msec -= mm * 1000 * 60; 
    var ss = Math.floor(msec/1000); 
    msec -= ss * 1000; 
    // diff = 28800000 => hh = 8, mm = 0, ss = 0, msec = 0 
+1

Pełna odpowiedź: http://stackoverflow.com/a/1788084/529544 – JDandChips

+0

są downvotes z powodu kopiowania i wklejania? – metalim

Powiązane problemy