@pmun/utils / formatDuration
Function: formatDuration()
ts
function formatDuration(timestamp, format?): string | number;
格式化时间戳为时长字符串
支持自定义格式化模板和智能单位显示。如果提供格式化字符串,则按照指定格式返回; 如果不提供,则智能判断显示单位,只显示有意义的时间单位。
Parameters
timestamp
number
时间戳(毫秒)或者持续时间(毫秒)
format?
string
可选的格式化字符串,支持 YY(年)、MM(月)、DD(天)、HH(小时)、mm(分钟)、ss(秒钟)占位符
Returns
string
| number
格式化后的时长字符串或数字
Example
ts
// 使用自定义格式
formatDuration(3661000, 'HH:mm:ss') // "01:01:01"
formatDuration(3661000, 'HH时mm分ss秒') // "01时01分01秒"
formatDuration(90061000, 'DD天HH时mm分ss秒') // "01天01时01分01秒"
formatDuration(2592000000, 'MM月DD天') // "01月00天"
formatDuration(31536000000, 'YY年MM月DD天') // "01年00月00天"
// 单一格式返回数字(双字母或单字母,支持小数)
formatDuration(604800000, 'HH') // 168(总小时数)
formatDuration(604800000, 'H') // 168(总小时数)
formatDuration(90000, 'mm') // 1.5(总分钟数,支持小数)
formatDuration(90000, 'm') // 1.5(总分钟数,支持小数)
formatDuration(604800000, 'DD') // 7(总天数)
formatDuration(604800000, 'D') // 7(总天数)
// 智能格式(只显示有意义的单位)
formatDuration(3600000) // "1小时"(正好1小时)
formatDuration(3661000) // "1小时1分钟1秒"(1小时1分钟1秒)
formatDuration(90061000) // "1天1小时1分钟1秒"(1天1小时1分钟1秒)
formatDuration(2592000000) // "1个月"(30天)
formatDuration(31536000000) // "1年"(365天)
formatDuration(125000) // "2分钟5秒"(2分钟5秒)
formatDuration(30000) // "30秒"(30秒)
formatDuration(5000) // "5秒"(5秒)
formatDuration(0) // "0秒"(0秒)
// 处理超大时间值
formatDuration(94608000000) // "3年"(3*365天)
formatDuration(94694461000) // "3年1天1小时1分钟1秒"