我正在寻找一个简单的方法来概括小时和分钟在JavaScript中产生一个总价值:总和小时和分钟在javascript
var json1 = {
hour : "8",
minutes : "15"
};
var json2 = {
hour : "8",
minutes : "45"
};
预期输出:
var total = "17h00";
我正在寻找一个简单的方法来概括小时和分钟在JavaScript中产生一个总价值:总和小时和分钟在javascript
var json1 = {
hour : "8",
minutes : "15"
};
var json2 = {
hour : "8",
minutes : "45"
};
预期输出:
var total = "17h00";
var totalH;
var totalM;
addTimes = function(timeMap) {
// First simply adding all of it together, total hours and total minutes
for (var x in timeMap) {
totalH += parseInt(timeMap[x].hour, 10);
totalM += parseInt(timeMap[x].minutes, 10);
}
// If the minutes exceed 60
if (totalM >= 60) {
// Divide minutes by 60 and add result to hours
totalH += Math.floor(totalM/60);
// Add remainder of totalM/60 to minutes
totalM = totalM % 60;
}
return totalH + "h" + totalM;
}
我不会在没有基数的情况下使用'parseInt',因为在这里看起来''0'可能是一个很好的可能性,而旧版本的实现会将其解释为八进制。 – 2016-11-25 16:01:34
如果在入口中我有一个json对象的地图,你能否提供你的代码的更新? (我事先不知道,有多少物品进入......) – wawanopoulos
@wawanopoulos如果小时数超过24小时,会发生什么?它会回到00h00还是会变成1d00h00? –
这里一种功能性的方法,假设你有一系列时间
var times = [{
hour : "8",
minutes : "15"
},{
hour : "8",
minutes : "45"
}]
迭代时间,求和,然后格式化,然后加入字符串。
times.reduce(function(memo, t) { // sum the times
memo[0] += parseInt(t.hour, 10)
memo[1] += parseInt(t.minutes, 10)
if (memo[1] >= 60) {
memo[0] += ~~(memo[1]/60)
memo[1] = memo[1] % 60
}
return memo
}, [0, 0]).map(function(t) { // map to the desired format
if (t < 10) {
return '0' + t
}
return t
}).join('h') // => 17h00
能否请更新您的代码,如果在进入我有地图对象而不是数组的 – wawanopoulos
@wawanopoulos你是什么意思“地图对象”?一个值是时间的对象?提供有效的JS结构,我可以提供帮助。 – Damon
铬控制台只需复制粘贴,看到漂亮的结果
var json1 = { hour : "8", minutes : "15" };
var json2 = { hour : "8", minutes : "45" };
function get_add_two_times(json1, json2) {
hr = parseInt(json1.hour) + parseInt(json2.hour);
mn = parseInt(json1.minutes) + parseInt(json2.minutes);
final_hr = hr + Math.floor(mn/60);
final_mn = mn%60;
final_mn = (final_mn < 10) ? '0' + final_mn : final_mn;
return final_hr + 'h' + final_mn;
}
get_add_two_times(json1,json2);
一些样本输出
var json1 = {hour : "1", minutes : "15"};
var json2 = {hour : "02", minutes : "49"};
> "4h04"
var json1 = {hour : "12", minutes : "15"};
var json2 = {hour : "12", minutes : "49"};
> "25h04"
看看momentjs http://momentjs.com/docs/#/durations/add/ – dubes
@dubes,我知道即使是与日期远程相关的所有内容都可以推荐“moment.js”,但我并不认为这真的有必要。 –
到目前为止您尝试过什么?它现在看起来不像是一个js问题,但更像是一个数学问题。 –