我有两次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 :(得分: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);
答案 1 :(得分: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/
使用第二次计算更新
答案 2 :(得分:1)
https://github.com/timrwood/moment会议记录库涵盖了您需要的大部分内容。 查看Google Closure Library日期实施。 http://closure-library.googlecode.com/svn/docs/namespace_goog_date.html
答案 3 :(得分: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);
答案 4 :(得分:0)
那里有很多图书馆(没有谷歌搜索,但@ alex23有一个)。但是,这个过程通常都是一样的。将字符串转换为最小公分母。在这种情况下秒。一旦你有秒,将两者加在一起,然后再将其转换回小时分钟。这些转换是@codebox演示的简单乘法和设计。