如何用Vanilla JS将秒数时长转换为人类易读格式?
将秒数转换为人类可读的时长格式(Vanilla JS)
需求说明
需要把以秒为单位的整数转换为人类易读的中文时长格式,示例如下:
| 时长(秒) | 人类易读格式 |
|---|---|
| 24 | 24秒 |
| 430 | 7分钟10秒 |
| 600 | 10分钟 |
| 3600 | 1小时 |
| 7477 | 2小时4分钟37秒 |
尝试过Intl.DateTimeFormat会附带日期部分,Intl.RelativeTimeFormat仅支持单一单位,均无法满足需求。
自定义实现方案
以下是纯JS的自定义函数,通过拆分时长单位、过滤非零部分来生成目标格式:
function formatSecondsToReadable(seconds) { const hours = Math.floor(seconds / 3600); const remainingAfterHours = seconds % 3600; const minutes = Math.floor(remainingAfterHours / 60); const remainingSeconds = remainingAfterHours % 60; const parts = []; if (hours > 0) parts.push(`${hours}小时`); if (minutes > 0) parts.push(`${minutes}分钟`); // 若前面无有效单位(如输入0秒),或剩余秒数不为0,则添加秒数部分 if (remainingSeconds > 0 || parts.length === 0) { parts.push(`${remainingSeconds}秒`); } return parts.join(''); } // 测试示例 console.log(formatSecondsToReadable(24)); // 输出:24秒 console.log(formatSecondsToReadable(430)); // 输出:7分钟10秒 console.log(formatSecondsToReadable(600)); // 输出:10分钟 console.log(formatSecondsToReadable(3600)); // 输出:1小时 console.log(formatSecondsToReadable(7477)); // 输出:2小时4分钟37秒
逻辑说明
- 通过数学运算拆分出小时、分钟、剩余秒数
- 只收集数值大于0的单位部分,避免出现“0小时”这类无效内容
- 特殊处理秒数:当小时和分钟都为0时,强制显示秒数(比如输入0秒时输出“0秒”)
- 最后将所有有效部分拼接成完整字符串
内容的提问来源于stack exchange,提问作者code913
相关产品推荐
相关产品推荐

