虽然转换秒数到时间格式得到了错误的答案

时间:2017-03-24 11:29:28

标签: javascript

当我将秒数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

提前致谢。

7 个答案:

答案 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;
&#13;
&#13;