2013-08-26 25 views
5

Ho cercato di ottenere la differenza di orario tra 2 diverse volte e lo sto ottenendo correttamente per ore e minuti. Ma se il secondo è maggiore del primo, avrà il problema. Il tempo è visualizzato con dati negativi.Ottenere la differenza di tempo tra due volte in javascript

ad esempio

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

Se ottengo la differenza tra inizio e fine

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

che non è un valore corretto. Sto usando il seguente script per ottenere questo valore.

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); 

chiunque dirmi come ottenere la differenza di tempo tra due tempi correttamente anche in considerazione con i secondi

+0

è possibile convertirli in secondi prima o anche meglio a milis econds, fai la tua aritmetica e riconvertili nel tuo formato. – kangoroo

+0

ma se lo faccio influenzerà anche i minuti. Voglio ottenere un tempo con il formato "HH: MM: SS" – Kalai

+0

Le versioni ffmpeg recenti hanno un'opzione '-to' in modo da non dover calcolare il tempo per il parametro' -t'. Vedi: http://ffmpeg.org/ffmpeg-all.html#Main-options – slhck

risposta

-6

provare a fare questo

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) 

è quindi possibile convertire i millisecondi a ore, minuti e secondi In questo modo:

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

Risposta integrale: http://stackoverflow.com/a/1788084/529544 – JDandChips

+0

sono downvotes a causa di copia e incolla? – metalim

Problemi correlati