如何以非常特定的方式截断字符串

时间:2018-07-18 15:04:08

标签: javascript time truncate

我有一个函数,该函数需要几毫秒的时间,并返回较大时间单位的格式化字符串。例如,如果传入74600毫秒,它将返回字符串“ 1:14.600”。

我现在的问题是我希望它只返回毫秒数的前两位数字,但是我不确定该怎么做。我当时正在考虑将字符串截断,但我认为您只能根据长度进行操作,如果在分钟的位置中有两位数字,则会将其丢弃。

这是我的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)将其保留在小数点后两位,所以此问题仅存在于较大的字符串(一分钟以上) )。

1 个答案:

答案 0 :(得分:1)

在将其与其他变量连接之前,Id建议仅对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