2017-05-27 75 views
0

我已經試過很長時間,但我失敗了,請大家幫忙,顯示持續時間

var set_time = document.getElementById('set'); 
set_time.onclick = function start_time() { 
    var myDate = new Date(); 

然後進行自定義時間

var h = myDate.getHours(); 
    var m = myDate.getUTCMinutes(); 
    var s = myDate.getSeconds(); 
    var time = h + ':' + m + ':' + s; 

後設定的時間在輸入字段

document.getElementById('start').value = time; 
}; 

與上述相同的設定結束時間

var end_time = document.getElementById('end'); 
end_time.onclick = function end_time() { 
    var myDate = new Date(); 

店結束時間的輸入域

var time = h + ':' + m + ':' + s; 
    document.getElementById('stop').value = time; 
}; 

現在我想找到差異或持續時間,並在輸入字段中設置「持續時間」

function duration(){ 
    var start= document.getElementById('start').value; 
    var stop = document.getElementById('stop').value; 

    // i want to calculate duration and display the duration in an input field 

    document.getElementById('duration').value = result; 

}; 
setInterval(duration, 1000); 
+0

定義「我失敗了。」。你有錯誤嗎?你得到什麼結果?你認爲你會錯在哪裏? –

+0

澄清你的問題 – AvrilAlejandro

回答

0

我想這可以寫成更好,但爲了可讀性:PEN

var start= document.getElementById('start').value; 
    var stop = document.getElementById('stop').value; 

    var startVal = document.getElementById('start').value.split(':'); 
    var stopVal = document.getElementById('stop').value.split(':'); 
    var h = (parseInt(stopVal[0])-parseInt(startVal[0]))*3600; 
    var m = (parseInt(stopVal[1])-parseInt(startVal[1]))*60; 
    var s = (parseInt(stopVal[2])-parseInt(startVal[2])) 
    var dur = h+m+s; 

    var hOut = Math.floor(dur/3600) 
    var mOut = Math.floor((dur-hOut*3600)/60) 
    var sOut = dur-hOut*3600-mOut*60 
    var result = hOut+':'+mOut+':'+sOut 
    if (!isNaN(sOut)) document.getElementById('duration').value = result; 

編輯:另一個版本使用日期:

var start= document.getElementById('start').value; 
    var stop = document.getElementById('stop').value; 
    if (!start || !stop) return; 

    var startVal = new Date(zeroDay+start+timeZone) 
    var stopVal = new Date(zeroDay+stop+timeZone) 

    var dur = stopVal-startVal 

    var result = new Date(dur-60*60*1000) 
    document.getElementById('duration').value = result.toTimeString().split(' ')[0]; 

'零日'是歷史(日期)的第一天 - 1970年1月1日。 PEN

+0

非常感謝..它的作品很好,但這個代碼太複雜,我不能理解....如果有任何其他簡單的解決方案,那麼它可能會對我更好... 我只是想設置一個按鈕開始其中包含任何會議的開始時間,然後包含結束時間,並最終找到持續時間的停止按鈕...我知道基本的JavaScript,但我想學習..... – shofin

+0

恐怕這項任務贏得了因爲JS中沒有本地「持續時間」支持,所以不會變得更容易,但我已經用另一個示例編輯了代碼。 –