如何将耗时毫秒转换为包含天数的HH:mm:ss格式?
解决时长转换丢失天数的问题
你当前用moment.utc()处理时长的方式有误——它是把秒数当成UTC时间点解析,超过24小时的部分会被归为次日时间,自然丢失了天数信息。正确的做法是用moment.duration()专门处理时长,以下提供两种符合需求的实现方式:
方式一:显示天数+时分秒(如2(days):12:41:49)
直接基于moment.duration计算天数和剩余时分秒,手动拼接格式:
const elapsedSeconds = 218509; const duration = moment.duration(elapsedSeconds, 'seconds'); const days = Math.floor(duration.asDays()); const hours = duration.hours(); const minutes = duration.minutes(); const seconds = duration.seconds(); // 格式化输出,确保时分秒为两位数字 const elapsed = `${days}(days):${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`; alert(elapsed); // 输出 2(days):12:41:49
方式二:显示总小时数+时分秒(如60:41:49)
如果不需要单独显示天数,直接计算总小时数即可:
const elapsedSeconds = 218509; const duration = moment.duration(elapsedSeconds, 'seconds'); const totalHours = Math.floor(duration.asHours()); const minutes = duration.minutes(); const seconds = duration.seconds(); const elapsed = `${totalHours}:${String(minutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`; alert(elapsed); // 输出 60:41:49
可选:用moment-duration-format插件简化代码
如果项目允许引入插件,安装moment-duration-format后可以直接通过格式化字符串实现:
// 先安装插件:npm install moment-duration-format import moment from 'moment'; import 'moment-duration-format'; const elapsedSeconds = 218509; // 显示天数格式 console.log(moment.duration(elapsedSeconds, 'seconds').format('d(days):HH:mm:ss')); // 2(days):12:41:49 // 显示总小时数格式 console.log(moment.duration(elapsedSeconds, 'seconds').format('H:mm:ss')); // 60:41:49
内容的提问来源于stack exchange,提问作者markzzz
相关产品推荐
相关产品推荐

