/** * 日期/时间格式化 * @param fmt 格式要求:datetime / date / time 完整值: yyyy-MM-dd hh:mm:ss * @param date 传入时间 * @param flag true: 中文 / 不传或false: 英文 * @returns {string} 返回格式化后的字符 */ export function useFormatTime(fmt: string, date: Date, flag?: boolean): string { date = new Date(date) || date flag = flag || false if (fmt === 'datetime') { fmt = flag ? 'yyyy年MM月dd日 hh时mm分ss秒' : 'yyyy-MM-dd hh:mm:ss' } else if (fmt === 'date') { fmt = flag ? 'yyyy年MM月dd日' : 'yyyy-MM-dd' } else if (fmt === 'time') { fmt = flag ? 'hh时mm分ss秒' : 'hh:mm:ss' } else if (fmt === 'timeNoSecond') { fmt = flag ? 'hh时mm分' : 'hh:mm' } else if (fmt === 'datetimeString') { fmt = flag ? 'yyyy年MM月dd日 hh时mm分ss秒' : 'yyyyMMddhhmmss' } const obj: any = { 'y+': date.getFullYear(), 'M+': date.getMonth() + 1, // 月份 'd+': date.getDate(), // 日 'h+': date.getHours(), // 小时 'm+': date.getMinutes(), // 分 's+': date.getSeconds() // 秒 } // 2.1遍历取出所有的时间 for (const key in obj) { // let reg = new RegExp("M+"); const reg = new RegExp(`${key}`) // 取出格式化字符串中对应的格式字符 MM dd hh mm ss let fmtStr: any = fmt.match(reg) if (fmtStr) { fmtStr = fmtStr[0] // 单独处理一位或者两位的时间 if (fmtStr!.length === 1) { // 一位 fmt = fmt.replace(fmtStr, obj[key]) } else { // 两位 let numStr = '00' + obj[key] // "00" + 4 = "004" // "00" + 23 = "0023" if (fmtStr!.length === 4) { numStr = numStr.substr((obj[key] + '').length - 2) } else { numStr = numStr.substr((obj[key] + '').length) } fmt = fmt.replace(fmtStr, numStr) } } } // 3.将格式化之后的字符串返回 return fmt }