常用转换方法

import gConf from "gConf";

/**

 * @copyright hulinlin 3222941047@qq.com

 * @description 格式化时间

 * @param time

 * @param cFormat

 * @returns {string|null}

 */

export function parseTime(time, cFormat) {

  if (arguments.length === 0) {

    return null;

  }

  const format = cFormat || "{y}-{m}-{d} {h}:{i}:{s}";

  let date;

  if (typeof time === "object") {

    date = time;

  } else {

    if (typeof time === "string" && /^[0-9]+$/.test(time)) {

      time = parseInt(time);

    }

    if (typeof time === "number" && time.toString().length === 10) {

      time = time * 1000;

    }

    date = new Date(time);

  }

  const formatObj = {

    y: date.getFullYear(),

    m: date.getMonth() + 1,

    d: date.getDate(),

    h: date.getHours(),

    i: date.getMinutes(),

    s: date.getSeconds(),

    a: date.getDay(),

  };

  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {

    let value = formatObj[key];

    if (key === "a") {

      return ["日", "一", "二", "三", "四", "五", "六"][value];

    }

    if (result.length > 0 && value < 10) {

      value = "0" + value;

    }

    return value || 0;

  });

  return time_str;

}

/**

 * @copyright hulinlin 3222941047@qq.com

 * @description 格式化时间

 * @param time

 * @param option

 * @returns {string}

 */

export function formatTime(time, option) {

  if (("" + time).length === 10) {

    time = parseInt(time) * 1000;

  } else {

    time = +time;

  }

  const d = new Date(time);

  const now = Date.now();

  const diff = (now - d) / 1000;

  if (diff < 30) {

    return "刚刚";

  } else if (diff < 3600) {

    // less 1 hour

    return Math.ceil(diff / 60) + "分钟前";

  } else if (diff < 3600 * 24) {

    return Math.ceil(diff / 3600) + "小时前";

  } else if (diff < 3600 * 24 * 2) {

    return "1天前";

  }

  if (option) {

    return parseTime(time, option);

  } else {

    return (

      d.getMonth() +

      1 +

      "月" +

      d.getDate() +

      "日" +

      d.getHours() +

      "时" +

      d.getMinutes() +

      "分"

    );

  }

}

/**

 * @copyright hulinlin 3222941047@qq.com

 * @description 将url请求参数转为json格式

 * @param url

 * @returns {{}|any}

 */

export function paramObj(url) {

  const search = url.split("?")[1];

  if (!search) {

    return {};

  }

  return JSON.parse(

    '{"' +

      decodeURIComponent(search)

        .replace(/"/g, '\\"')

        .replace(/&/g, '","')

        .replace(/=/g, '":"')

        .replace(/\+/g, " ") +

      '"}'

  );

}

/**

 * @copyright hulinlin 3222941047@qq.com

 * @description 父子关系的数组转换成树形结构数据

 * @param data

 * @returns {*}

 */

export function translateDataToTree(data) {

  const parent = data.filter(

    (value) => value.parentId === "undefined" || value.parentId == null

  );

  const children = data.filter(

    (value) => value.parentId !== "undefined" && value.parentId != null

  );

  const translator = (parent, children) => {

    parent.forEach((parent) => {

      children.forEach((current, index) => {

        if (current.parentId === parent.id) {

          const temp = JSON.parse(JSON.stringify(children));

          temp.splice(index, 1);

          translator([current], temp);

          typeof parent.children !== "undefined"

            ? parent.children.push(current)

            : (parent.children = [current]);

        }

      });

    });

  };

  translator(parent, children);

  return parent;

}

/**

 * @copyright hulinlin 3222941047@qq.com

 * @description 树形结构数据转换成父子关系的数组

 * @param data

 * @returns {[]}

 */

export function translateTreeToData(data) {

  const result = [];

  data.forEach((item) => {

    const loop = (data) => {

      result.push({

        id: data.id,

        name: data.name,

        parentId: data.parentId,

      });

      const child = data.children;

      if (child) {

        for (let i = 0; i < child.length; i++) {

          loop(child[i]);

        }

      }

    };

    loop(item);

  });

  return result;

}

/**

 * @copyright hulinlin 3222941047@qq.com

 * @description 10位时间戳转换

 * @param time

 * @returns {string}

 */

export function tenBitTimestamp(time) {

  const date = new Date(time * 1000);

  const y = date.getFullYear();

  let m = date.getMonth() + 1;

  m = m < 10 ? "" + m : m;

  let d = date.getDate();

  d = d < 10 ? "" + d : d;

  let h = date.getHours();

  h = h < 10 ? "0" + h : h;

  let minute = date.getMinutes();

  let second = date.getSeconds();

  minute = minute < 10 ? "0" + minute : minute;

  second = second < 10 ? "0" + second : second;

  return y + "年" + m + "月" + d + "日 " + h + ":" + minute + ":" + second; //组合

}

/**

 * @copyright hulinlin 3222941047@qq.com

 * @description 13位时间戳转换

 * @param time

 * @returns {string}

 */

export function thirteenBitTimestamp(time) {

  const date = new Date(time / 1);

  const y = date.getFullYear();

  let m = date.getMonth() + 1;

  m = m < 10 ? "" + m : m;

  let d = date.getDate();

  d = d < 10 ? "" + d : d;

  let h = date.getHours();

  h = h < 10 ? "0" + h : h;

  let minute = date.getMinutes();

  let second = date.getSeconds();

  minute = minute < 10 ? "0" + minute : minute;

  second = second < 10 ? "0" + second : second;

  return y + "年" + m + "月" + d + "日 " + h + ":" + minute + ":" + second; //组合

}

/**

 * @copyright hulinlin 3222941047@qq.com

 * @description 获取随机id

 * @param length

 * @returns {string}

 */

export function uuid(length = 32) {

  const num = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";

  let str = "";

  for (let i = 0; i < length; i++) {

    str += num.charAt(Math.floor(Math.random() * num.length));

  }

  return str;

}

/**

 * @copyright hulinlin 3222941047@qq.com

 * @description m到n的随机数

 * @param m

 * @param n

 * @returns {number}

 */

export function random(m, n) {

  return Math.floor(Math.random() * (m - n) + n);

}

/**

 * @copyright

 * @description 获取接口地址

 * @returns {String}

 */

export function getApiUrl() {

  return process.env.NODE_ENV !== "production"

    ? gConf.devApiURL

    : gConf.proApiURL;

}

/**

 * @copyright hulinlin 3222941047@qq.com

 * @description addEventListener

 * @type {function(...[*]=)}

 */

export const on = (function () {

  return function (element, event, handler, useCapture = false) {

    if (element && event && handler) {

      element.addEventListener(event, handler, useCapture);

    }

  };

})();

/**

 * @copyright hulinlin 3222941047@qq.com

 * @description removeEventListener

 * @type {function(...[*]=)}

 */

export const off = (function () {

  return function (element, event, handler, useCapture = false) {

    if (element && event) {

      element.removeEventListener(event, handler, useCapture);

    }

  };

})();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值