/**
* @desc 工具库
* @author 张迪
*/
// 首先在main.js中引入
// import $util from 'util.js';
// Vue.prototype.$util = $util;
// 然后在页面中直接使用
// this.$util.getQueryString();
export default {
// 获取时间差异 传入时间戳
getDateDiff(dateTimeStamp){
var minute = 1000 * 60;
var hour = minute * 60;
var day = hour * 24;
var halfamonth = day * 15;
var month = day * 30;
var now = new Date().getTime();
var diffValue = now - dateTimeStamp;
if(diffValue < 0){return;}
var monthC = diffValue/month;
var weekC = diffValue/(7*day);
var dayC = diffValue/day;
var hourC = diffValue/hour;
var minC = diffValue/minute;
var result;
if(monthC>=1){
result="" + parseInt(monthC) + "月前";
}
else if(weekC>=1){
result="" + parseInt(weekC) + "周前";
}
else if(dayC>=1){
result=""+ parseInt(dayC) +"天前";
}
else if(hourC>=1){
result=""+ parseInt(hourC) +"小时前";
}
else if(minC>=1){
result=""+ parseInt(minC) +"分钟前";
}
else{
result="刚刚";
}
return result;
},
// 获取指定前几天的日期
getBeforeDate(days){
var now = new Date().getTime();
var ago = now - 86400000*days;
var agoDate = new Date(ago);
var year = agoDate.getFullYear();
var mon = agoDate.getMonth()+1;
var day = agoDate.getDate();
mon = mon<10?'0'+mon:mon;
day = day<10?'0'+day:day;
var date = year+''+mon+''+day;
return date;
},
// 从身份证号中提取性别
getSex(cardNo){
var sexStr = '';
if (parseInt(cardNo.slice(-2, -1)) % 2 == 1) {
sexStr = '男';
} else {
sexStr = '女';
}
return sexStr;
},
// 从身份证号中提取年龄
getAge(cardNo){
if (cardNo != null && cardNo != '') {
var myDate = new Date();
var month = myDate.getMonth() + 1;
var day = myDate.getDate();
var age = myDate.getFullYear() - cardNo.substring(6, 10) - 1;
if (cardNo.substring(10, 12) < month || cardNo.substring(10, 12) == month && cardNo.substring(12, 14) <= day) {
age++;
}
return age;
}
},
// 获取URL后面多个参数
getQueryString(name){
var url = location.href.replace('?from=',''); // 只要替换掉?开头的即可 &不影响search的截取
var search = url.substr(url.indexOf('?')); // 根据?的位置 截取search
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
},
// 函数防抖
debounce(func, wait = 1000, immediate = true){
let timer;
return function() {
let context = this,
args = arguments;
if (timer) clearTimeout(timer);
if (immediate) {
let callNow = !timer;
timer = setTimeout(() => {
timer = null;
}, wait);
if (callNow) func.apply(context, args);
} else {
timer = setTimeout(() => {
func.apply(context, args);
}, wait)
}
}
},
// 函数节流
throttle(func, wait = 1000, type = 1){
let previous = 0;
let timeout;
return function() {
let context = this;
let args = arguments;
if (type === 1) {
let now = Date.now();
if (now - previous > wait) {
func.apply(context, args);
previous = now;
}
} else if (type === 2) {
if (!timeout) {
timeout = setTimeout(() => {
timeout = null;
func.apply(context, args)
}, wait)
}
}
}
},
// 计算两点直接距离
GetDistance(lat1,lng1,lat2,lng2){
var radLat1 = lat1*Math.PI / 180.0;
var radLat2 = lat2*Math.PI / 180.0;
var a = radLat1 - radLat2;
var b = lng1*Math.PI / 180.0 - lng2*Math.PI / 180.0;
var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
s = s *6378.137 ;// EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
return s;
},
// 输入银行卡号时每四位自动加空格
everyFour(val){
return val.replace(/\s/g,'').replace(/[^\d]/g,'').replace(/(\d{4})(?=\d)/g,'$1');
},
// 秒数转化为时分秒
formatSeconds(time){
let s = parseInt(time)
let m = 0
let h = 0
if (s >= 60) {
m = parseInt(s / 60)
s = parseInt(s % 60)
if (m >= 60) {
h = parseInt(m / 60)
m = parseInt(m % 60)
}
}
h = h < 10 ? '0' + h : h;
m = m < 10 ? '0' + m : m;
s = s < 10 ? '0' + s : s;
return h +':'+ m +':'+ s;
},
// 秒数转化为日期
formatDate(time){
let date = new Date(time);
let Y = date.getFullYear();
let M = date.getMonth()+1;
let D = date.getDate();
M = M < 10 ? '0' + M : M;
D = D < 10 ? '0' + D : D;
return Y +'-'+ M +'-'+ D;
}
}
前端开发常用工具库
于 2022-08-09 09:01:08 首次发布