2013-08-26 39 views
5

我試圖獲得2個不同時間之間的時差,並且我正確地獲得了幾小時和幾分鐘的時間差。但是,如果第二個比第一個更大,它將會遇到問題。時間顯示爲負數據。在javascript中獲取兩次時間差

例如

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

如果我得到的開始和結束時間

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

這是不正確的值之間的差異。我正在使用以下腳本獲取此值。

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

誰能告訴我怎麼去兩個時間之間的時間差正確,即使秒考慮

+0

你可以先將它們轉換成秒,或者更好地轉換成米利斯秒,做你的算術,並將它們轉換回你的格式。 – kangoroo

+0

但如果我這樣做,它也會影響分鐘。我想用「HH:MM:SS」格式獲得時間 – Kalai

+0

最近的ffmpeg版本有一個'-to'選項,所以你不必計算'-t'參數的時間。請參閱:http://ffmpeg.org/ffmpeg-all.html#Main-options – slhck

回答

-6

嘗試這樣做

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) 

然後可以轉換毫秒到小時,分鐘和秒像這樣:

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

完整答案:http://stackoverflow.com/a/1788084/529544 – JDandChips

+0

是downvotes因爲複製和粘貼? – metalim