2013-04-08 122 views
1

我有兩次in_time和out_time.I想使用javascript添加這兩個時間。我該怎麼做? in_time和out_time的值來自文本框。 我的HTML代碼如何添加小時,分鐘和秒鐘?

<div> 
<b>PunchIn</b> 
    <input type="text" id="intime" class="time" placeholder="09:00:00" /> 
    <p class="error">PunchTime is not valid</p> 
</div> 
<br/> 
<div> 
    <b>OutTime</b> 
    <input type="text" id="brktime" class="time" placeholder="06:00:00" /> 
    <p class="error1">OutTime is not valid</p> 
</div> 

您可以從Demo

+0

你使用24小時制或AM/PM後綴? – 2013-04-08 12:21:49

+0

其12小時時鐘 – Niths 2013-04-09 04:22:39

回答

3

這是JavaScript中,第二計算還包括

試試這個,

var a = "17.30.15hrs" 
var b = "1.30.20hrs" 

alert(addtime(a, b)); 

var a = "23.00.25hrs" 
var b = "1.30.60hrs" 

alert(addtime(a, b)); 

function addtime(start_time, end_time) { 
    var startArr = start_time.replace('hrs', '', start_time).split('.'); 
    var endArr = end_time.replace('hrs', '', end_time).split('.'); 

    var d = new Date(); 
    startArr[0] = (startArr[0]) ? parseInt(startArr[0], 10) : 0; 
    startArr[1] = (startArr[1]) ? parseInt(startArr[1], 10) : 0; 
    startArr[2] = (startArr[2]) ? parseInt(startArr[2], 10) : 0; 
    endArr[0] = (endArr[0]) ? parseInt(endArr[0], 10) : 0; 
    endArr[1] = (endArr[1]) ? parseInt(endArr[1], 10) : 0; 
    endArr[2] = (endArr[2]) ? parseInt(endArr[2], 10) : 0; 

    d.setHours(startArr[0] + endArr[0]); 
    d.setMinutes(startArr[1] + endArr[1]); 
    d.setSeconds(startArr[2] + endArr[2]); 

    var hours = d.getHours(); 
    var minutes = d.getMinutes(); 
    var seconds = d.getSeconds(); 

    return hours + '.' + minutes + '.' + seconds + 'hrs'; 
} 

演示:http://jsfiddle.net/AXVPf/7/

更新與第二計算

0

您可以使用下面的函數來你的時間字符串轉換成數字,然後你就可以只加在一起

function getTimeAsSeconds(time){ 
    var timeArray = time.split(':'); 
    return Number(timeArray [0]) * 3600 + Number(timeArray [1]) * 60 + Number(timeArray[2]); 
} 

喜歡的東西:

var timeInSeconds = getTimeAsSeconds(document.getElementById('intime').value) + getTimeAsSeconds(document.getElementById('brktime').value); 
10

轉換的時間,以秒,加他們,並格式化結果:

function toSeconds(s) { 
    var p = s.split(':'); 
    return parseInt(p[0], 10) * 3600 + parseInt(p[1], 10) * 60 + parseInt(p[2], 10); 
} 

function fill(s, digits) { 
    s = s.toString(); 
    while (s.length < digits) s = '0' + s; 
    return s; 
} 

var sec = toSeconds(intime) + toSeconds(out); 

var result = 
    fill(Math.floor(sec/3600), 2) + ':' + 
    fill(Math.floor(sec/60) % 60, 2) + ':' + 
    fill(sec % 60, 2); 

演示:http://jsfiddle.net/Guffa/JLh6W/

+0

你可以在我的示例 – Niths 2013-04-08 12:41:43

+0

@ Agent1上顯示:粘貼:http://jsfiddle.net/Guffa/gxDcn/3/ – Guffa 2013-04-08 13:57:10

+0

@ guffa - 請檢查此鏈接也http://jsfiddle.net/ gxDcn/4/ 我需要一個12小時的時鐘計算 – Niths 2013-04-09 04:13:33

0

有很多圖書館(沒有做谷歌搜索,但@ alex23有一個)。但是,過程通常是相同的。將字符串轉換爲最小公分母。在這種情況下秒。一旦你有秒數加在一起,然後再轉換回小時分鐘秒。這些轉換是@codebox演示的簡單乘法和設計。