/** * 时长展示 比如:300秒 展示为:0:5 * @param time number 单位:秒 * @param format 返回的结果格式 {mm} * @param allowEmpty 是否允许time为空 */ import { strPad } from '../string/strPad'; const [oneDay, oneHour, oneMinute] = [86400, 3600, 60]; export const formatTime = (time: number, format: string, allowEmpty = true) => { let timelen = time < 0 ? 0 : parseFloat(`${time}`); if ((isNaN(timelen) || !timelen) && !(allowEmpty && timelen === 0)) { // 0代表无数据,显示- return '-'; } let [days, hours, minutes, seconds]: (number | undefined)[] = [undefined, undefined, undefined, undefined]; if (format.indexOf('{DD}') > -1) { days = Math.floor(timelen / oneDay); timelen = Math.floor(timelen % oneDay); } if (format.indexOf('{HH}') > -1) { hours = Math.floor(timelen / oneHour); timelen = Math.floor(timelen % oneHour); } if (format.indexOf('{mm}') > -1) { minutes = Math.floor(timelen / oneMinute); timelen = Math.floor(timelen % oneMinute); } seconds = timelen; const timeStr = format .replace('{ss}', typeof seconds === 'number' ? strPad('left', String(seconds), 2, '0') : '') .replace('{mm}', typeof minutes === 'number' ? strPad('left', String(minutes), 2, '0') : '') .replace('{HH}', typeof hours === 'number' ? strPad('left', String(hours), 2, '0') : '') .replace('{DD}', typeof days === 'number' ? strPad('left', String(days), 2, '0') : ''); return timeStr; };