如何以非常具体的方式截断字符串

How to truncate a string in a very specific way

我有一个以毫秒为单位的函数,returns 是一个更大时间单位的格式化字符串。例如,如果您传入 74600 毫秒,则它 return 是字符串“1:14.600”。

我现在的问题是我只想 return 毫秒的前两位数字,但我不确定该怎么做。我在考虑截断字符串,但我认为你只能根据长度来做,如果分钟位置有两位数字,它就会把它扔掉。

这是我的 timeFormatter() 函数:

function timeFormatter(s) {
        var ms = s % 1000;
        s = (s - ms) / 1000;
        var secs = s % 60;
        s = (s - secs) / 60;
        var mins = s % 60;
        var hrs = (s - mins) / 60;

        if (hrs > 0) {

        } else {
            if (mins > 0) {
                if (secs < 9) {
                    if (ms < 99) {
                        return mins + ':0' + secs + '.0' + ms;
                    } else {
                        return mins + ':0' + secs + '.' + ms;
                    }
                } else {
                    if (ms < 99) {
                        return mins + ':' + secs + '.0' + ms;
                    } else {
                        return mins + ':' + secs + '.' + ms;
                    }
                }
            } else {
                if (ms < 99) {
                    return secs + '.0' + ms;
                } else {
                    return secs + '.' + ms;
                }
            }
        }
    }

我知道里面有那么大的 if 语句,我还不太关心如何简化它。

谢谢!

编辑:我应该添加较小的字符串(不到一分钟)来解决这个问题,我只是使用 toFixed(2) 将它保持在小数点后两位,所以这个问题只存在于较大的字符串(超过一分钟)。

我建议您先对 ms 变量执行数学运算,然后再将它与其他变量连接起来。

ms = Math.floor(ms/10);//if you want to simulate integer division (truncation)

ms = Math.round(ms/10);//if you want to round the last digit of precision