使用jQuery补全时间格式末尾零:秒转时间时分显示异常问题
解决秒数转时间格式时分钟位补零的问题
你的问题出在toFixed(2)的使用场景不对——buildEndTime是拼接出来的字符串(比如"14:0"),parseFloat会提取出前面的数字部分(14),转成14.00,完全达不到补分钟位零的效果。
给你两个可行的解决方案:
方案一:使用ES6的padStart方法(推荐)
先分别计算小时和分钟,把分钟转成字符串后用padStart(2, '0')强制补成两位:
const hours = Math.floor(gig.end_time / 3600); const minutes = Math.floor((gig.end_time % 3600) / 60); const buildEndTime = `${hours}:${minutes.toString().padStart(2, '0')}`;
比如输入50400秒(14*3600),会得到"14:00";输入3660秒(1小时1分),得到"1:01"。
方案二:自定义补零函数(兼容旧环境)
如果需要支持不兼容padStart的旧浏览器,写个简单的补零函数:
function padZero(num) { return num < 10 ? `0${num}` : num; } const hours = Math.floor(gig.end_time / 3600); const minutes = Math.floor((gig.end_time % 3600) / 60); const buildEndTime = `${hours}:${padZero(minutes)}`;
另外补充下:你原来的Math.floor(gig.end_time / 60) % 60计算分钟的方式是对的,但用(gig.end_time % 3600) / 60来计算剩余分钟会更直观,逻辑上是等价的。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

