前端项目tool工具文件(TS)

const tool = {
    // 深拷贝
    deepClone(source: any) {
        let sourceCopy = source instanceof Array ? [] : {};
        for (let item in source) {
            sourceCopy[item] = typeof source[item] === 'object' && source[item] ? this.deepClone(source[item]) : source[item];
        }
        return sourceCopy;
    },
    // UTC时间转为当前时区标准时间
    utcTODate(utcDate: Date) {
        // console.log(localDate) //Thu Jun 30 2011 00:52:48 GMT+0800 (中国标准时间)
        return new Date(utcDate)
    },
    //获取上月第一天的零点时间戳
    getLastMonthZeroTime(v: string | number | Date) {
        let _date = new Date();//本月
        if (v) {//v-某月的时间戳
            _date = new Date(v);
        }
        _date.setMonth(_date.getMonth() - 1);
        _date.setDate(1);
        _date.setHours(0);
        _date.setMinutes(0);
        _date.setSeconds(0);
        _date.setMilliseconds(0);
        return _date.getTime();
    },
    //获取下月第一天的零点时间戳
    getNextMonthZeroTime(v: string | number | Date) {
        let _date = new Date();//本月
        if (v) {//v-某月的时间戳
            _date = new Date(v);
        }
        _date.setMonth(_date.getMonth() + 1);
        _date.setDate(1);
        _date.setHours(0);
        _date.setMinutes(0);
        _date.setSeconds(0);
        _date.setMilliseconds(0);
        return _date.getTime();
    },
    //获取某月第一天的零点时间戳
    getMonthZeroTime(v: string | number | Date) {
        let _date = new Date();//本月
        if (v) {//v-某月的时间戳
            _date = new Date(v);
        }
        _date.setDate(1);
        _date.setHours(0);
        _date.setMinutes(0);
        _date.setSeconds(0);
        _date.setMilliseconds(0);
        return _date.getTime();
    },
    //获取某月最后一天的最后一刻时间戳
    getMonthEndTime(v: string | number | Date) {
        let _date = new Date();//本月
        if (v) {//v-月中某一天
            _date = new Date(v);
        }
        _date.setMonth(_date.getMonth() + 1);
        _date.setDate(1);
        _date.setHours(0);
        _date.setMinutes(0);
        _date.setSeconds(0);
        _date.setMilliseconds(0);
        return _date.getTime() - 1;
    },
    //获取上年第一天的零点时间戳
    getLastYearZeroTime(v: string | number | Date) {
        let _date = new Date();//本月
        if (v) {//v-月中某一天
            _date = new Date(v);
        }
        _date.setFullYear(_date.getFullYear() - 1);
        _date.setMonth(0);
        _date.setDate(1);
        _date.setHours(0);
        _date.setMinutes(0);
        _date.setSeconds(0);
        _date.setMilliseconds(0);
        return _date.getTime();
    },
    //获取下年第一天的零点时间戳
    getNextYearZeroTime(v: string | number | Date) {
        let _date = new Date();//本月
        if (v) {//v-月中某一天
            _date = new Date(v);
        }
        _date.setFullYear(_date.getFullYear() + 1);
        _date.setMonth(0);
        _date.setDate(1);
        _date.setHours(0);
        _date.setMinutes(0);
        _date.setSeconds(0);
        _date.setMilliseconds(0);
        return _date.getTime();
    },
    //获取某年第一天的零点时间戳
    getYearZeroTime(v: string | number | Date) {
        let _date = new Date();//本月
        if (v) {//v-月中某一天
            _date = new Date(v);
        }
        _date.setMonth(0);
        _date.setDate(1);
        _date.setHours(0);
        _date.setMinutes(0);
        _date.setSeconds(0);
        _date.setMilliseconds(0);
        return _date.getTime();
    },
    //获取某年最后一天的最后一刻时间戳
    getYearEndTime(v: string | number | Date) {
        let _date = new Date();//当年
        if (v) {//v-年中某一天
            _date = new Date(v);
        }
        _date.setFullYear(_date.getFullYear() + 1);
        _date.setMonth(0);
        _date.setDate(1);
        _date.setHours(0);
        _date.setMinutes(0);
        _date.setSeconds(0);
        _date.setMilliseconds(0);
        return _date.getTime() - 1;
    },
    //获取今天零点时间戳
    getZeroTime() {
        let _date = new Date();
        _date.setHours(0);
        _date.setMinutes(0);
        _date.setSeconds(0);
        _date.setMilliseconds(0);
        return _date.getTime();
    },
    //获取n天前的零点时间戳
    getNDayBeforeZeroTime(n: number) {
        if ('undefined' == typeof n) return false;
        let _date = new Date();
        _date.setHours(0);
        _date.setMinutes(0);
        _date.setSeconds(0);
        _date.setMilliseconds(0);
        let _nDayBefore = _date.getTime() - n * 86400 * 1000
        return _nDayBefore;
    },
    // 标准时间返回时间戳
    cstReturnTimeString(v: any) {
        var d: any = new Date(v)
        d =
            d.getFullYear() +
            '-' +
            (d.getMonth() + 1) +
            '-' +
            d.getDate() +
            ' ' +
            d.getHours() +
            ':' +
            d.getMinutes() +
            ':' +
            d.getSeconds()
        var s = new Date(d).getTime()
        return s
    },
    // 时间戳返回时间 格式 yyyy-MM-dd hh:mm:ss
    timeStringReturnTime(n: any) {
        // 想返回今日的  new Date()
        // 比如需要这样的格式 yyyy-MM-dd hh:mm:ss
        n = new Date(Number(n))
        return n.toLocaleDateString().replace(/\//g, "-") + " " + n.toTimeString().substr(0, 8)
    },
    // 返回时间 格式 yyyy-MM-dd 如果未传则返回现在的时间 str 之间的分隔符
    returnTimeData(dateData: any, str: any) {
        var data = new Date();
        if (typeof dateData == 'undefined') {
            data = new Date()
        } else {
            data = new Date(dateData)
        }
        var y = data.getFullYear()
        var m: any = data.getMonth() + 1
        m = m < 10 ? ('0' + m) : m
        var d: any = data.getDate()
        d = d < 10 ? ('0' + d) : d
        let time = y + '-' + m + '-' + d
        if (str != undefined) {
            time = y + str + m + str + d
        }
        return time
    },
    // 返回时间时分秒
    getNowTimer(dateData: any) {
        var time = new Date();
        if (typeof dateData == 'undefined') {
            time = new Date()
        } else {
            time = new Date(dateData)
        }
        var h: any;
        h = time.getHours();
        h = h < 10 ? '0' + h : h;
        var m: any;
        m = time.getMinutes();
        m = m < 10 ? '0' + m : m;
        var s: any;
        s = time.getSeconds();
        s = s < 10 ? '0' + s : s;
        return h + ':' + m + ':' + s;
    },
    // 返回data时间N天之前的时间戳
    returnPreNdays(n: any, data: any) {
        // data 需要传入时间,不传的话默认当前时间,n 为必传
        if ('undefined' == typeof n) return false;
        let _date = new Date();
        if (typeof data == 'undefined') {
            _date = new Date();
        } else {
            _date = new Date(data);
        }
        let _nDayBefore = _date.getTime() - n * 86400 * 1000
        return _nDayBefore;
    },
    // 数组根据key排序(例:[{id:  1, value: 'asaa'}])
    arraySortOfKey(arr: Array<object>, key: string) {
        let brr = arr;
        brr.sort(function (a: any, b: any) {
            return a[key] - b[key];
        })
        return brr;

    },
    // 数组去重(例:[1,2,3,1,12,3])
    arrRemoveDuplication(arr: Array<any>) {
        return [...new Set(arr)];
    },
    // 检查手机号格式
    checkMobile(mobile: any) {
        return mobile == null ? false : /^(((1[3456789][0-9]{1})|(15[0-9]{1}))+\d{8})$/.test(mobile);
    },
    // 检验邮箱
    checkEmail(str: string) {
        var reg = new RegExp("^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$");
        if (str.length < 1 || !reg.test(str)) {
            return false;
        } else {
            return true;
        }
    },
    // 获取url地址中的参数
    getUrlParam(sUrl: any, sKey: string) {
        var result: any;
        result = {};
        sUrl.replace(/(\w+)=(\w+)(?=[&|#])/g, function (ele: any, key: any, val: any) {
            if (!result[key]) {
                result[key] = val;
            } else {
                var temp = result[key];
                result[key] = [].concat(temp, val);
            }
        })
        if (!sKey) {
            return result;
        } else {
            return result[sKey] || '';
        }
    },
    // 文件导出
    downloadFile(data: any) {
        // 文件导出
        if (!data) {
            return
        }
        let url = window.URL.createObjectURL(new Blob([data]))
        let link = document.createElement('a')
        link.style.display = 'none'
        link.href = url
        //文件名
        link.setAttribute('download', '模板.xls')
        document.body.appendChild(link)
        link.click()
    },
    // // 下载模板
    // async getDevFileExample () {
    //     let that = this
    //     const data = await exportImportSchemaApi()
    //     that.downloadFile(data)
    // },
    reduceArr(source: any, part: any) {// 删除数组特定一组元素
        if (part.length > 0) {
            part.forEach((item: any) => {
                source.splice(source.indexOf(item), 1)
            });
        }
        return source
    },

}
export default tool

版权声明:本文为qq_42761482原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。