/**
 * 将时间戳格式化
 * @param {number} timestamp
 * @param {string} fmt
 * @param {string} [defaultVal]
 * @returns {string} 格式化后的日期字符串
 * @example
 *
 * const stamp = new Date('2020-11-27 8:23:24').getTime();
 *
 * const res = timeStampFormat(stamp, 'yyyy-MM-dd hh:mm:ss')
 *
 * // 2020-11-27 08:23:24
 */
function timeStampFormat(timestamp, fmt, defaultVal) {
  var whitePrefix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
  if (!timestamp) {
    return defaultVal || '';
  }
  var date = new Date();
  if ("".concat(timestamp).length === 10) {
    timestamp *= 1000;
  }
  date.setTime(timestamp);
  var o = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds(),
    'q+': Math.floor((date.getMonth() + 3) / 3),
    S: date.getMilliseconds() // 毫秒
  };
  var reg = /(y+)/;
  if (whitePrefix) {
    reg = new RegExp("(?:^|(?:[^".concat(whitePrefix, "y]))(y+)"));
  }
  var match = fmt.match(reg);
  if (match === null || match === void 0 ? void 0 : match[1]) {
    fmt = fmt.replace(match[1], "".concat(date.getFullYear()).slice(4 - match[1].length));
  }
  // eslint-disable-next-line no-restricted-syntax
  for (var k in o) {
    var _reg = new RegExp("(".concat(k, ")"));
    if (whitePrefix) {
      _reg = new RegExp("(?:^|(?:[^".concat(whitePrefix).concat(k[0], "]))(").concat(k, ")"));
    }
    match = fmt.match(_reg);
    if (match === null || match === void 0 ? void 0 : match[1]) {
      var _match = match,
        _match$index = _match.index,
        index = _match$index === void 0 ? 0 : _match$index;
      var realIndex = whitePrefix ? index + match[0].length - match[1].length : index;
      var str = "".concat(o[k]);
      var len = match[1].length;
      var replacePart = len === 1 ? str : "00".concat(str).slice("".concat(str).length);
      fmt = fmt.slice(0, realIndex) + replacePart + fmt.slice(realIndex + len);
      // fmt = fmt.replace(
      //   match[1],
      //   match[1].length === 1 ? str : `00${str}`.slice(`${str}`.length),
      // );
    }
  }
  if (whitePrefix) {
    fmt = fmt.replace(new RegExp(whitePrefix, 'g'), '');
  }
  return fmt;
}
/**
 * 将日期格式化
 * @param {Date} date
 * @param {string} format
 * @returns {string} 格式化后的日期字符串
 * @example
 *
 * const date = new Date('2020-11-27 8:23:24');
 *
 * const res = dateFormat(date, 'yyyy-MM-dd hh:mm:ss')
 *
 * // 2020-11-27 08:23:24
 */
function dateFormat(date, fmt) {
  var timestamp = new Date(date).getTime();
  return timeStampFormat(timestamp, fmt);
}

export { dateFormat, timeStampFormat };
