我有一个函数,该函数需要几毫秒的时间,并返回较大时间单位的格式化字符串。例如,如果传入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)将其保留在小数点后两位,所以此问题仅存在于较大的字符串(一分钟以上) )。
答案 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