22 lines
662 B
TypeScript
22 lines
662 B
TypeScript
|
|
export function formatDate(
|
||
|
|
dateStr?: string | null,
|
||
|
|
format: string = 'YYYY-MM-DD',
|
||
|
|
fallback: string = '-',
|
||
|
|
): string {
|
||
|
|
if (!dateStr) return fallback
|
||
|
|
|
||
|
|
const date = new Date(dateStr)
|
||
|
|
if (isNaN(date.getTime())) return fallback
|
||
|
|
|
||
|
|
const map: Record<string, string | number> = {
|
||
|
|
YYYY: date.getFullYear(),
|
||
|
|
MM: String(date.getMonth() + 1).padStart(2, '0'),
|
||
|
|
DD: String(date.getDate()).padStart(2, '0'),
|
||
|
|
HH: String(date.getHours()).padStart(2, '0'),
|
||
|
|
mm: String(date.getMinutes()).padStart(2, '0'),
|
||
|
|
ss: String(date.getSeconds()).padStart(2, '0'),
|
||
|
|
}
|
||
|
|
|
||
|
|
return format.replace(/YYYY|MM|DD|HH|mm|ss/g, matched => String(map[matched]))
|
||
|
|
}
|