/** 日期时间格式化(兼容原 CRM parseTime 用法) */ export function parseTime(time?: string | number | Date | null, pattern = '{y}-{m}-{d} {h}:{i}:{s}'): string { if (time == null || time === '') return '' let date: Date if (typeof time === 'object') { date = time } else { if (typeof time === 'string' && /^[0-9]+$/.test(time)) { time = parseInt(time, 10) } if (typeof time === 'number' && time.toString().length === 10) { time = time * 1000 } date = new Date(time) } if (Number.isNaN(date.getTime())) return '' const formatObj: Record = { y: date.getFullYear(), m: date.getMonth() + 1, d: date.getDate(), h: date.getHours(), i: date.getMinutes(), s: date.getSeconds(), a: date.getDay() } return pattern.replace(/\{([ymdhisa])+\}/g, (_result, key: string) => { const value = formatObj[key] if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } return value.toString().padStart(2, '0') }) } export function formatDateTime(time?: string | null) { return parseTime(time) } export function formatDate(time?: string | number | Date | null) { return parseTime(time, '{y}-{m}-{d}') }