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

React项目中如何用Moment.js或原生JS将mm:ss转为秒数?

将mm:ss格式时长转换为秒数(原生JS/Moment.js实现)

原生JavaScript实现

无需依赖任何库,通过字符串拆分、数值转换和简单计算即可完成:

// 定义转换函数
const convertToSeconds = (durationStr) => {
  const [minutes, seconds] = durationStr.split(':').map(Number);
  return minutes * 60 + seconds;
};

// 处理目标数据数组
const data = [{
  duration: "00:10"
}, {
  duration: "20:00"
}, {
  duration: "30:00"
}];

const result = data.map(item => ({
  ...item,
  seconds: convertToSeconds(item.duration)
}));

console.log(result);
// 输出:[{duration: "00:10", seconds: 10}, {duration: "20:00", seconds: 1200}, {duration: "30:00", seconds: 1800}]

Moment.js实现

你之前的方法失效是因为moment.duration默认不会按mm:ss解析字符串,以下两种方式可以解决:

方法1:拆分后构造时长对象

import moment from 'moment';

const convertToSecondsWithMoment = (durationStr) => {
  const [minutes, seconds] = durationStr.split(':').map(Number);
  return moment.duration({ minutes, seconds }).asSeconds();
};

// 处理数据数组
const result = data.map(item => ({
  ...item,
  seconds: convertToSecondsWithMoment(item.duration)
}));

方法2:转换为ISO 8601格式后解析

import moment from 'moment';

const convertToSecondsWithMoment = (durationStr) => {
  const [minutes, seconds] = durationStr.split(':');
  // 转成Moment支持的ISO 8601时长格式
  const isoDuration = `PT${minutes}M${seconds}S`;
  return moment.duration(isoDuration).asSeconds();
};

两种Moment.js方案都能得到预期结果,推荐第一种拆分构造的方式,逻辑更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:01:03