2013-04-08 2 views
1

У меня есть два раза in_time и out_time.Я хочу добавить эти два раза с помощью 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? –

+0

его 12-часовые часы – Niths

ответ

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

+0

@ Agent1: Вставлено: http://jsfiddle.net/Guffa/gxDcn/3/ – Guffa

+0

@ Guffa- pls также проверьте эту ссылку http://jsfiddle.net/ gxDcn/4/ Мне нужно 12-часовое вычисление часов – Niths

0

Существует много библиотек (не было поиска Google, но у alex23 есть). Однако процесс, как правило, один и тот же. Преобразуйте строки в наименьший общий знаменатель. В этом случае секунды. Как только у вас есть секунды, добавьте их вместе, а затем снова переверните обратно на несколько минут. Эти преобразования являются простыми умножениями и делениями, как показано на примере @codebox.

Смежные вопросы