我正在尋找一個簡單的方法來概括小時和分鐘在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問題,但更像是一個數學問題。 –