utils.js

utils.js 部分工具函数

/**
 * @param {date} time 需要转换的时间
 * @param {String} fmt 需要转换的格式 如 yyyy-MM-dd、yyyy-MM-dd HH:mm:ss
 */
export function formatTime(time, fmt) {
  if (!time) return '';
  else {
    const date = new Date(time);
    const 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(),
    };
    if (/(y+)/.test(fmt))
      fmt = fmt.replace(
        RegExp.$1,
        (date.getFullYear() + '').substr(4 - RegExp.$1.length)
      );
    for (const k in o) {
      if (new RegExp('(' + k + ')').test(fmt)) {
        fmt = fmt.replace(
          RegExp.$1,
          RegExp.$1.length === 1
            ? o[k]
            : ('00' + o[k]).substr(('' + o[k]).length)
        );
      }
    }
    return fmt;
  }
}
/***获取当前系统日期 */
export function getNowDate() {
  const timeOne = new Date()
  const year = timeOne.getFullYear()
  let month = timeOne.getMonth() + 1
  let day = timeOne.getDate()
  month = month < 10 ? '0' + month : month
  day = day < 10 ? '0' + day : day
  const NOW_MONTHS_AGO = `${year}-${month}-${day}`
  return NOW_MONTHS_AGO
}
/*** 获取指定日期前/后多少天 */
export function getNextDate(date, day) {
  var dd = new Date(date);
  dd.setDate(dd.getDate() + day);
  var y = dd.getFullYear();
  var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1;
  var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
  return y + "-" + m + "-" + d;
};



/**
 * 判断字符是否为空
 * str:字符串
 */
function isNullorEmpty(str) {
  return (str == null || str == "" || str == undefined || str == "undefined") && (str != 0 || str != "0") ? true : false;
}
//数值过千加逗号,并保留几位小数
export function numFormat(num, len) {
  if (isNullorEmpty(num)) {
    return '-';
  }
  var isNegative = num >= 0 ? false : true;
  if (isNegative) {     //是否负数
    num = Math.abs(Number(num));
  }
  // var c=num && num != 0 ? Number(num).toFixed(len).replace(/(\d)(?=(\d{3})+\.)/g, '$1,') : '0';
  var c = num && num != 0 ? (Math.floor(Number(num) * Math.pow(10, len)) / Math.pow(10, len)).toFixed(len).replace(/(\d)(?=(\d{3})+\.)/g, '$1,') : '0';
  //c = '$' + c;
  if (isNegative) {     //是否负数
    c = '-' + c;
  }
  return c;
}

//过千加逗号
export function toThousands(num) {
  var result = '', counter = 0;
  var dot = String(num).indexOf(".");
  if (dot != -1) {
    // alert("有小数点");
    // 获取小数点后面的数字(indexOf和substring都不支持数字,所以要先转字符串才可以用)
    var dotCnt = String(num).substring(dot + 1, num.length);

    // 获取小数点前面的数字
    num = String(num).split('.')[0]
    num = (num || 0).toString();
    for (var i = num.length - 1; i >= 0; i--) {
      counter++;
      result = num.charAt(i) + result;
      if (!(counter % 3) && i != 0) { result = ',' + result; }
    }
    result = result + '.' + dotCnt;
    return result;

  } else {
    // alert("没有小数点");
    return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,');
  }
}
/**
 * 简单实现防抖方法
 *
 * 防抖(debounce)函数在第一次触发给定的函数时,不立即执行函数,而是给出一个期限值(delay),比如100ms。
 * 如果100ms内再次执行函数,就重新开始计时,直到计时结束后再真正执行函数。
 * 这样做的好处是如果短时间内大量触发同一事件,只会执行一次函数。
 *
 * @param fn 要防抖的函数
 * @param delay 防抖的毫秒数
 * @returns {Function}
 */
export function simpleDebounce(fn, delay = 100) {
  let timer = null
  return function () {
    let args = arguments
    if (timer) {
      clearTimeout(timer)
    }
    timer = setTimeout(() => {
      fn.apply(this, args)
    }, delay)
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pony君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值