interface Date {
  format(format: string): string
}

/**
 * 时间格式化
 * @param format
 */
Date.prototype.format = function (format: DateType | undefined = 'datetime'): string {
  if (format === 'date') {
    format = 'yyyy-MM-dd'
  } else if (format === 'datetime') {
    format = 'yyyy-MM-dd hh:mm:ss'
  } else if (format === 'time') {
    format = 'hh:mm:ss'
  }
  const o = {
    "M+": this.getMonth() + 1, //month
    "d+": this.getDate(), //day
    "h+": this.getHours(), //hour
    "m+": this.getMinutes(), //minute
    "s+": this.getSeconds(), //second
    "q+": Math.floor((this.getMonth() + 3) / 3), //quarter
    "S": this.getMilliseconds() //millisecond
  }
  if (/(y+)/.test(format)) {
    format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  }
  for (const k in o) {
    if (new RegExp("(" + k + ")").test(format)) {
      format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
    }
  }
  return format;
}


// String.prototype.formatDate = function (format) {
//   const time = this.replaceAll(/-/g, "/");
//   return new Date(time).format(format);
// }