将像素转换为分钟

jso*_*ray 4 javascript math time

我有一个应用程序,我将像素转换为分钟和小时.基本上使用分钟作为度量单位:

120分钟= 240像素

我通过这个函数运行:

convertToTime: function (min) {
    var hours = Math.floor( min / 60);          
    var minutes = Math.round(min % 60);
    if (minutes < 10) {
        minutes = "0" + minutes;
    }
    if (hours > 12) {
        hours = hours % 12;
    }
    return hours + ":" + minutes;
}
Run Code Online (Sandbox Code Playgroud)

除了当分钟达到60时,它正在正确地返回所有内容.例如,它返回:

12:58 12:59 12:60

这不是我想要的,因为那不是实时的.

我认为问题是2像素到1分钟的比例.但是我很难把它钉死.

非常感谢任何帮助!

moo*_*dow 5

Math.floor(min) % 60而不是Math.round(min % 60).

%是模数运算符.x % 60对于正整数x,将始终产生介于0和59之间的整数值,这是您的分钟显示所需的值.你的问题是它min不是一个整数 - 正好是一半的时间,因为你通过将整数除以2得到它.特别是,当你的像素数是119时,min是59.5,并且Math.round()会将其舍入到60.因为%不太可能一般来说,为了浮点输入做你想要的,正确的解决方案是在计算模数之前确保值是一个整数,而不是在之后尝试舍入它.