import { themeConfig } from '@/config' import type { DateFormat } from '@/types' const MONTHS_EN = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] const VALID_SEPARATORS = ['.', '-', '/'] /** * @param date * @param format * @returns */ export function formatDate(date: Date, format?: string): string { const formatStr = (format || themeConfig.date.dateFormat).trim() const configSeparator = themeConfig.date.dateSeparator || '-' const separator = VALID_SEPARATORS.includes(configSeparator.trim()) ? configSeparator.trim() : '.' const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() const monthName = MONTHS_EN[date.getMonth()] const pad = (num: number) => String(num).padStart(2, '0') switch (formatStr) { case 'YYYY-MM-DD': return `${year}${separator}${pad(month)}${separator}${pad(day)}` case 'MM-DD-YYYY': return `${pad(month)}${separator}${pad(day)}${separator}${year}` case 'DD-MM-YYYY': return `${pad(day)}${separator}${pad(month)}${separator}${year}` case 'MONTH DAY YYYY': return `${monthName} ${day} ${year}` case 'DAY MONTH YYYY': return `${day} ${monthName} ${year}` default: return `${year}${separator}${pad(month)}${separator}${pad(day)}` } } export const SUPPORTED_DATE_FORMATS: readonly DateFormat[] = [ 'YYYY-MM-DD', 'MM-DD-YYYY', 'DD-MM-YYYY', 'MONTH DAY YYYY', 'DAY MONTH YYYY' ] as const