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版权协议,转载请附上原文出处链接和本声明。