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

使用moment.js将分钟数转换为x小时y分钟格式的人类可读时长

解决方案

方案1:纯原生Moment实现(无额外依赖)

直接调用Moment自带的humanize方法拼接,自动继承全局本地化配置:

function formatDuration(minutes) {
  const dur = moment.duration(minutes, 'minutes')
  const hours = Math.floor(dur.asHours())
  const mins = dur.minutes()
  const res = []

  if (hours > 0) {
    res.push(moment.duration(hours, 'hours').humanize())
  }
  if (mins > 0) {
    res.push(moment.duration(mins, 'minutes').humanize())
  }

  return res.join(', ')
}

测试效果完全匹配需求:

  • formatDuration(124) → 2 hours, 4 minutes
  • formatDuration(34) → 34 minutes
  • formatDuration(725) → 12 hours, 5 minutes
    如果你的Moment全局设置为其他语言(比如中文),输出会自动适配为对应语言的表述,无需额外修改代码。

方案2:使用官方配套插件实现更简洁的格式化

如果可以引入Moment官方维护的moment-duration-format插件,可以直接调用内置的format方法,代码更精简:

// 引入插件后直接调用,自动适配当前Moment的locale配置
const formatted = moment.duration(totalMinutes, 'minutes').format('h [hours], m [minutes]', {
  trim: 'all', // 自动删除值为0的单位部分
  pluralize: true, // 自动处理单复数
  largest: 2 // 最多展示两个单位,不会出现天、秒
})

效果和方案1完全一致,也支持全量本地化能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:45:06