js 日期格式化

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'))

 

posted @ 2025-12-05 16:43  howhy  阅读(1)  评论(0)    收藏  举报