前端开发常用工具库

/**
 * @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;
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值