将像素转换为分钟

时间:2011-09-26 18:44:06

标签: 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;
}

除了分钟达到60分钟之外,它正确地返回所有内容。例如,它返回:

12:58 12:59 12:60

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

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

非常感谢任何帮助谢谢!

3 个答案:

答案 0 :(得分:5)

Math.floor(min) % 60代替Math.round(min % 60)

%是模数运算符。对于正整数x % 60x将始终产生介于0和59之间的整数值,这是您的分钟显示所需的值。你的问题是min不是一个整数 - 正好是一半的时间,因为你是通过将整数除以2得到的。特别是,当你的像素数是119时,min是59.5,并且Math.round()会将其舍入到60.由于%通常不太可能对浮点输入执行所需操作,因此正确的解决方法是在计算模数之前确保该值为整数,而不是试图在之后将其围绕。

答案 1 :(得分:1)

您使用Math.floor作为小时,但Math.round作为分钟。您可以通过使用Math.floor来解决您的问题!

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

答案 2 :(得分:0)

你也需要

Math.round(Math.round(min) % 60)

Math.round(Math.floor(min) % 60)

Math.round(Math.ceil(min) % 60)

当你使用float时可能会给你那个错误......例如Math.round(59.5%60)