Files
shanxia2.0/web-admin/src/utils/format.ts
T
2026-07-01 18:52:26 +08:00

42 lines
1.2 KiB
TypeScript

/** 日期时间格式化(兼容原 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<string, number> = {
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}')
}