繁体   English   中英

如何使用 javascript 将小时和分钟转换为分钟?

[英]How convert hours and minutes into minutes using javascript?

在此处输入图像描述 我需要使用 javascript 将小时和分钟(30 分钟,65 分钟)转换为下拉列表中的分钟,如果只有 30 分钟,则显示为 30 分钟,如果是 65 分钟,则在下拉列表的文本中显示 1 小时 05 分钟,值属性中的值为 65 ,我尝试了一些代码,在图片的右侧,它给出的值是 1hr60mins 而不是 2hrs! 在最后一行的代码中,我只是控制台对象,

 var tObj = [ {"hr": 0, "min": 30, "inMin": 0, "value": "" }, {"hr": 0, "min": 45, "inMin": 0, "value": "" }, {"hr": 1, "min": 60, "inMin": 0, "value": "" } ]; tObj.forEach(function(obj){ if(obj.min > 0){ if(obj.hr > 0){ obj.inMin = (obj.hr * 60 + obj.min); obj.value = obj.hr + "hr" + obj.min + "mins"; }else{ if(obj.min === 60){ obj.inMin = Math.floor(obj.min / 60); obj.value = obj.inMin + "hr"; }else{ obj.inMin = obj.min; obj.value = obj.min + "mins"; } } }else{ if(obj.hr > 0){ obj.inMin = (obj.hr * 60); obj.value = obj.hr + "hr"; }else{ obj.inMin = 0; obj.value = obj.min + "mins"; } } }); console.log(tObj);

如果我正确理解了您想要实现的目标,那么这应该可以完成工作:

 // SOLUTION TO THE EDITED QUESTION const tObj2 = Object.freeze([{ "hr": 0, "min": 30, "inMin": 0, "value": "" }, { "hr": 0, "min": 45, "inMin": 0, "value": "" }, { "hr": 0, "min": 50, "inMin": 0, "value": "" }, { "hr": 1, "min": 15, "inMin": 0, "value": "" }, { "hr": 1, "min": 30, "inMin": 0, "value": "" }, { "hr": 1, "min": 45, "inMin": 0, "value": "" }, { "hr": 2, "min": 0, "inMin": 0, "value": "" }, { "hr": 1, "min": 65, "inMin": 0, "value": "" } ]); tObj2.forEach(item => { const hours = item.hr + Math.floor(item.min / 60); const hoursTxt = hours > 0? hours + (hours === 1 && 'hr' || 'hrs'): ''; const minutes = item.min % 60; const minutesTxt = minutes + (minutes === 1 && 'min' || 'mins'); const timeTxt = hoursTxt? hoursTxt + ' ' + minutesTxt: minutesTxt; item.inMin = hours * 60 + minutes; item.value = timeTxt; }); // SOLUTION TO THE ORIGINAL QUESTION const tObj = Object.freeze([{ "hr": 0, "min": 30 }, { "hr": 0, "min": 60 }, { "hr": 1, "min": 0 }, { "hr": 1, "min": 45 }, { "hr": 2, "min": 45 }, { "hr": 0, "min": 60 } ]); const formattedTimes = tObj.reduce((acc, item) => { const hours = item.hr + Math.floor(item.min / 60); const hoursTxt = hours > 0? hours + (hours === 1 && 'hr' || 'hrs'): ''; const minutes = item.min % 60; const minutesTxt = minutes + (minutes === 1 && 'min' || 'mins'); const timeTxt = hoursTxt? hoursTxt + ' ' + minutesTxt: minutesTxt; const timeObj = { value: hours * 60 + minutes, text: timeTxt } acc.push(timeObj); return acc }, []); //test console.log('Solution to the edited question:', tObj2); console.log('Solution to the original question:', formattedTimes);

我对代码有点冗长,希望它是不言自明的,但如果你愿意,它可以缩短一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM