utils.js 4.58 KB
//防止多次重复点击  (函数节流)
export function throttle(fn, gapTime) {
  if (gapTime == null || gapTime == undefined) {
    gapTime = 1500;
  }
  let _lastTime = null;
  return function () {
    let _nowTime = new Date();
    if (_nowTime - _lastTime > gapTime || !_lastTime) {
      fn.apply(this, arguments); //将this和参数传给原函数
      _lastTime = _nowTime;
    }
  };
}

export function debounce(fn, delay) {
  let timeout = null;
  return function () {
    clearTimeout(timeout);
    timeout = setTimeout(() => {
      fn.apply(this, arguments);
    }, delay);
  };
}

/*  
  返回时间补0
  time 时间
  format 格式 yyyyMMdd HH:mm:ss, yyyyMMdd, HH:mm:ss
  Symbol 分隔符号
*/
export function getFormatDate(time, format, symbol) {
  if (typeof time == 'string') {
    time = new Date(time.replace(/-/g, '/'))
  }
  format = format ? format : "yyyyMMdd HH:mm:ss";
  symbol = symbol ? symbol : "";
  let year = time.getFullYear();
  let month =
    time.getMonth() < 9 ? "0" + (time.getMonth() + 1) : time.getMonth() + 1;
  let day = time.getDate() < 10 ? "0" + time.getDate() : time.getDate();
  let hour = time.getHours() < 10 ? "0" + time.getHours() : time.getHours();
  let minutes =
    time.getMinutes() < 10 ? "0" + time.getMinutes() : time.getMinutes();
  let seconds =
    time.getSeconds() < 10 ? "0" + time.getSeconds() : time.getSeconds();
  if (format === "yyyyMMdd HH:mm:ss") {
    return symbol
      ? `${year}${symbol}${month}${symbol}${day} ${hour}:${minutes}:${seconds}`
      : `${year}/${month}/${day} ${hour}:${minutes}:${seconds}`;
  } else if (format === "yyyyMMdd") {
    return symbol
      ? `${year}${symbol}${month}${symbol}${day}`
      : `${year}/${month}/${day}`;
  } else if (format === "HH:mm:ss") {
    return `${hour}:${minutes}:${seconds}`;
  } else if (format === "HH:mm") {
    return `${hour}:${minutes}`;
  }
}
// 返回每个月的第一天
export function getCurrentMonthFirst(date) {
  date.setDate(1);
  var month = parseInt(date.getMonth() + 1);
  var day = date.getDate();
  if (month < 10) {
    month = "0" + month;
  }
  if (day < 10) {
    day = "0" + day;
  }
  return date.getFullYear() + "-" + month + "-" + day;
}
// 返回每个月的最后一天
export function getCurrentMonthLast(date) {
  var currentMonth = date.getMonth();
  var nextMonth = ++currentMonth;
  var nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1);
  var oneDay = 1000 * 60 * 60 * 24;
  var lastTime = new Date(nextMonthFirstDay - oneDay);
  var month = parseInt(lastTime.getMonth() + 1);
  var day = lastTime.getDate();
  if (month < 10) {
    month = "0" + month;
  }
  if (day < 10) {
    day = "0" + day;
  }
  return date.getFullYear() + "-" + month + "-" + day;
}

//开始时间取整, 取5的倍数
export function getInterTime(time) {
  let date = time;
  if (typeof time == "string") {
    date = new Date(time);
  }
  const min = date.getMinutes();
  const addMin = Math.floor(min / 5) * 5 + 5;
  date.setMinutes(addMin);
  return date;
}


// 判断是刚刚 60分钟以内 23小时以内 正常时间年月日
export function getCreateShowTime(createdTime) {
  let timeResule = ''
  const creatTime = createdTime.replace(/\-/g, "/")
  const year = new Date().getFullYear()
  const month = new Date().getMonth() + 1
  const day = new Date().getDate()
  const creatYear = new Date(creatTime).getFullYear()
  const creatMonth = new Date(creatTime).getMonth() + 1
  const creatDay = new Date(creatTime).getDate()
  if (year == creatYear) {
    if (month == creatMonth) {
      if (day == creatDay) {
        const letMin = (new Date().getTime() - new Date(creatTime).getTime()) / 1000 / 60;
        if (letMin < 2) {
          timeResule = '刚刚'

        } else if (letMin < 60) {
          timeResule = letMin.toFixed(0) + '分钟前'
        } else {
          timeResule = (letMin / 60).toFixed(0) + '小时前'
        }
      } else {
        timeResule = day - creatDay + '天前'
      }
    } else {
      const leftDay = (new Date().getTime() - new Date(creatTime).getTime()) / 1000 / 60 / 60 / 24;

      if (leftDay < 28) {
        if (leftDay < 1) {
          timeResule = (leftDay * 24).toFixed(0) + '小时前'
        } else {
          timeResule = letDay.toFixed(0) + '天前'
        }
      } else {
        timeResule = `${creatTime.substring(5, 7)}${creatTime.substring(8, 10)}${creatTime.substring(11, 16)}`
      }
    }

  } else {
    timeResule = `${creatTime.substring(0, 4)}${creatTime.substring(5, 7)}${creatTime.substring(8, 10)}${creatTime.substring(11, 16)}`
  }

  return timeResule
}

export function padZero(val) {
  return ("00" + val).slice(-2);
}