You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让MomentJS将60分钟以mm:ss格式显示为60:00?

解决MomentJS格式化毫秒为XX:XX(总分钟数:秒数)的问题

你之前用moment(myVariable).format('mm:ss')的问题在于,这个方法是基于日期时间对象来格式化的,不是处理时长。比如3600000毫秒对应1小时,它会把分钟部分取成00,得到00:00,完全不符合显示总分钟数的需求。

而moment.duration(myVariable, 'seconds').asMinutes()的问题是,它返回的是总分钟数的数值(比如3600000毫秒转成秒是3600秒,asMinutes()返回60),但你需要的是60:00这种带冒号的格式化字符串,所以得手动处理格式化逻辑:

正确实现代码

// 封装成工具函数
function formatMsToMinSec(milliseconds) {
  // 用moment.duration处理时长
  const duration = moment.duration(milliseconds);
  // 计算总分钟数:取整得到全部时长对应的分钟数
  const totalMinutes = Math.floor(duration.asMinutes());
  // 获取剩余秒数(范围0-59)
  const seconds = duration.seconds();
  // 补零并拼接成XX:XX格式
  return `${String(totalMinutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;
}

// 测试用例
console.log(formatMsToMinSec(3600000)); // 输出 "60:00"
console.log(formatMsToMinSec(61000));    // 输出 "01:01"
console.log(formatMsToMinSec(3661000));  // 输出 "61:01"

逻辑说明

  1. moment.duration(milliseconds):把毫秒转成Moment的时长对象,这个对象能帮你拆分出小时、分钟、秒等单位。
  2. duration.asMinutes():返回总时长的分钟数(浮点数),用Math.floor()取整得到总分钟数。
  3. duration.seconds():直接获取时长里的剩余秒数(范围0-59)。
  4. padStart(2, '0'):确保分钟和秒数都是两位数字,不足的话前面补0。

内容的提问来源于stack exchange,提问作者Optiq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:47:14