当我将秒数165
转换为时间格式02:45
时,我错误地回答1小时加上小时部分3:45
。
我不知道实际问题在哪里。
console.log(ConvertStringToTimeFormat(165));
function ConvertStringToTimeFormat(timeString) {
var timeFormat = "";
if (timeString != null && timeString != null != "") {
if (Math.round((parseInt(timeString) / 60)) > 0)
timeFormat += Math.round((parseInt(timeString) / 60)) + ":";
else
timeFormat += "00:";
if ((parseInt(timeString) % 60) > 0)
timeFormat += (parseInt(timeString) % 60);
else
timeFormat += "00";
}
else {
timeFormat = "00:00";
}
return timeFormat;
}
当秒数为125时,我得到2:5
作为答案,但我需要02:05
提前致谢。
答案 0 :(得分:2)
您可以为部件使用数组并获取填充字符串,并将结果与:
结合。
function convert(min) {
return [Math.floor(min / 60), min % 60].map(function (a) { return ('00' + a).slice(-2); }).join(':');
}
console.log(convert(165));

ES6
function convert(min) {
return [Math.floor(min / 60), min % 60].map(a => ('00' + a).slice(-2)).join(':');
}
console.log(convert(165));

答案 1 :(得分:1)
当您使用Math.round函数时,您应该知道如果小数大于或等于5,您的值将四舍五入为向上。 我们来模拟一下:
165/60 = 2,75
它将向上舍入:3!
使用Math.floor代替你的问题解决了。
console.log(ConvertStringToTimeFormat(165));
function ConvertStringToTimeFormat(timeString) {
var timeFormat = "";
if (timeString != null && timeString != null != "") {
if (Math.floor((parseInt(timeString) / 60)) > 0)
timeFormat += Math.floor((parseInt(timeString) / 60)) + ":";
else
timeFormat += "00:";
if ((parseInt(timeString) % 60) > 0)
timeFormat += (parseInt(timeString) % 60);
else
timeFormat += "00";
}
else {
timeFormat = "00:00";
}
return timeFormat;
}
答案 2 :(得分:1)
在您使用Math.round()
的情况下,它会向上舍入2.75到3.您应该使用Math.floor()
代替。
console.log(ConvertStringToTimeFormat(165));
function ConvertStringToTimeFormat(timeString) {
var timeFormat = "";
if (timeString != null && timeString != null != "") {
if (Math.floor((parseInt(timeString) / 60)) > 0)
timeFormat += Math.floor((parseInt(timeString) / 60)) + ":";
else
timeFormat += "00:";
if ((parseInt(timeString) % 60) > 0)
timeFormat += (parseInt(timeString) % 60);
else
timeFormat += "00";
}
else {
timeFormat = "00:00";
}
return timeFormat;
}

答案 3 :(得分:1)
使用Math.floor
代替Math.round
,因为165/60
中的Math.round
为3,但您需要2
。因此,请使用Math.floor
来查找先前的整数值。
console.log(ConvertStringToTimeFormat(165));
function ConvertStringToTimeFormat(timeString) {
var timeFormat = "";
if (timeString != null && timeString != null && timeString!= "") {
if (Math.round((parseInt(timeString) / 60)) > 0)
timeFormat += Math.floor((parseInt(timeString) / 60)) + ":";
else
timeFormat += "00:";
if ((parseInt(timeString) % 60) > 0)
timeFormat += (parseInt(timeString) % 60);
else
timeFormat += "00";
}
else {
timeFormat = "00:00";
}
return timeFormat;
}
答案 4 :(得分:1)
您需要Math.floor
而不是Math.round
,后者返回The value of the given number rounded to the nearest integer
。
对于格式问题,请尝试以下代码:
console.log(ConvertStringToTimeFormat(125));
function formatHourOrMinute(hom) {
return ("0" + hom).slice( - 2);
}
function ConvertStringToTimeFormat(timeString) {
if (timeString) {
var timeInt = parseInt(timeString);
var hour = Math.floor(timeInt / 60);
var minute = timeInt % 60;
return formatHourOrMinute(hour) + ":" + formatHourOrMinute(minute);
} else {
return "00:00";
}
}
答案 5 :(得分:1)
我使用了一点皮肤重写了你的代码:
const ConvertStringToTimeFormat = (minutes) => ("00" + Math.floor(minutes / 60)).slice(-2) +":"+ ("00" + (minutes % 60)).slice(-2)
console.log(ConvertStringToTimeFormat(165))
答案 6 :(得分:0)
试试这段代码。那里有很多不必要的代码:
function minutesToHours(min) {
var minutes = min % 60;
var hours = (min-minutes)/60;
minutes = minutes < 10 ? '0' + minutes : minutes;
hours = hours < 10 ? '0' + hours : hours;
return hours+':'+minutes;
}
console.log(minutesToHours(165));
&#13;