function formatDate(date, format='date') {
if(typeof format ==='function'){
format=format();
}
if(typeof format !=='string'){
return new TypeError('format错误');
}
if(format==='date'){
format='YYYY-MM-DD';
}else if(format==='datetime'){
format='YYYY-MM-DD HH:mm:ss';
}
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
const seconds = String(date.getSeconds()).padStart(2, '0');
const milliseconds = String(date.getMilliseconds()).padStart(3, '0');
//console.log(3333,format);
return format
.replace('YYYY', year)
.replace('YY', String(year).slice(-2))
.replace('MM', month)
.replace('M', String(parseInt(month)))
.replace('DD', day)
.replace('D', String(parseInt(day)))
.replace('HH', hours)
.replace('H', String(parseInt(hours)))
.replace('hh', String(hours % 12 || 12).padStart(2, '0'))
.replace('h', String(parseInt(hours) % 12 || 12))
.replace('mm', minutes)
.replace('m', String(parseInt(minutes)))
.replace('ss', seconds)
.replace('s', String(parseInt(seconds)))
.replace('SSS', milliseconds)
.replace('A', hours >= 12 ? 'PM' : 'AM')
.replace('a', hours >= 12 ? 'pm' : 'am');
}
const date = new Date();
console.log(formatDate(date)); // "2025-12-05 14:47:02"
console.log(formatDate(date, 'YYYY年MM月DD日 HH时mm分ss秒')); // "2025年12月05日 14时47分02秒"
console.log(formatDate(date, 'hh:mm:ss A')); // "02:47:02 PM"
console.log(formatDate(date,(item)=>'HH:mm:ss'))