function toTime(secs) {
var hours = Math.floor( secs / 3600 ), minutes = Math.floor( secs % 3600 / 60 ), seconds = Math.ceil( secs % 3600 % 60 );
return ( hours == 0 ? '' : hours > 0 && hours.toString().length < 2 ? '0'+hours+':' : hours+':' ) + ( minutes.toString().length < 2 ? '0'+minutes : minutes ) + ':' + ( seconds.toString().length < 2 ? '0'+seconds : seconds );
}
我做的一个项目要把audio的当前时间转化成00:00 的形式,所以在网上找了一段代码,
但是出现这种情况
self.$currentTime.text(self.toTime(self.Audio.currentTime));
到一分钟应该 01:00啊,不知这段代码有什么逻辑问题?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
var hours = Math.floor( secs / 3600 ),
minutes = Math.floor( secs % 3600 / 60 ),
seconds = Math.ceil( secs % 3600 % 60 );
hours 向下取整, minutes 向下取整, seconds 向上取整逻辑上你传的是时间戳, 当时间介于59s, 60s,之间的时候当然就是60了.
简单处理方法在后面加逻辑判断:
你是传了什么参数出现00:60?
你的代码在我本地运行是正确的
如上所述,可能会出现59.0+的小数,建议输入值四舍五入
seconds = Math.ceil( secs % 3600 % 60 )向上取整,使得当值为59.XXX的时候取整为60
minutes和seconds 应该一致 要么都用ceil 要么都用floor