项目常用js工具库

1、关于时间格式化的方法

(1)时间格式处理方法

/**
 * 格式化时间
 * @param date 日期
 * @param format 需要转出的格式
 * @returns {*}
 */
function dateTimeFormatter (date, format) {
  if (!date || date === '') {
    return ''
  }

  if (typeof date === 'string') {
    var mts = date.match(/(\/Date\((\d+)\)\/)/)
    if (mts && mts.length >= 3) {
      date = parseInt(mts[2])
    }
  }

  date = new Date(date)
  if (!date || date.toUTCString() === 'Invalid Date') {
    return ''
  }

  var map = {
    'M': date.getMonth() + 1, // 月份
    'd': date.getDate(), // 日
    'h': date.getHours(), // 小时
    'm': date.getMinutes(), // 分
    's': date.getSeconds(), // 秒
    'q': Math.floor((date.getMonth() + 3) / 3), // 季度
    'S': date.getMilliseconds() // 毫秒
  }

  format = format.replace(/([yMdhmsqS])+/g, function (all, t) {
    var v = map[t]
    if (v !== undefined) {
      if (all.length > 1) {
        v = '0' + v
        v = v.substr(v.length - 2)
      }
      return v
    } else if (t === 'y') {
      return (date.getFullYear() + '').substr(4 - all.length)
    }
    return all
  })

  return format
}

(2)获取星期几

/**
* 获取星期几
* @param date 日期字符串
* return {String}
*/

function dayFormat (date) {
  switch (new Date(date).getDay()) {
    case 0:
      return '星期日'
    case 1:
      return '星期一'
    case 2:
      return '星期二'
    case 3:
      return '星期三'
    case 4:
      return '星期四'
    case 5:
      return '星期五'
    case 6:
      return '星期六'
  }
}

(3)获取两个时间差

 /**
 * 计算两个时间差
 * @param {Data} startTime 开始时间(xxxx-xx-xx)
 * @param {Data} endTime   结束时间(xxxx-xx-xx)
 * return xx年xx天  || xx天xx小时 || xx小时xx分
 */
function getDateDiff(startTime, endTime) {
 //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式
 startTime = startTime.replace(/\-/g, "/");
 endTime = endTime.replace(/\-/g, "/");
 var sTime = new Date(startTime); //开始时间
 var eTime = new Date(endTime); //结束时间
 var timeOff = eTime - sTime; //相差时间戳(毫秒数)
 var timeMinute = 1000 * 60;
 var timeHour = 1000 * 3600;
 var timeDay = 1000 * 3600 * 24;
 var timeYear = 1000 * 3600 * 24 * 365;
 if(timeOff / timeYear >= 1) {
    return parseInt(timeOff / timeYear) + "年" + parseInt((timeOff % timeYear)/timeDay) + "天";
 } else if(timeOff / timeDay >= 1) {
    return parseInt(timeOff / timeDay) + "天" + parseInt((timeOff % timeDay)/timeHour) + "小时";
 } else {
   return parseInt(timeOff / timeHour) + "小时" + parseInt((timeOff % timeHour)/timeMinute) + "分";
 }
}

(4)获取最小开始日期

/* today 是今天的时间戳(new Date().getTime()) */
function minStartDate (today, day) {
    let dayDiff = day * 24 * 60 * 60 *1000 // day(多少天)的时间戳
    let minStartTime = today - dayDiff
    // dateTimeFormatter是第一个时间类的方法
    return dateTimeFormatter(minStartTime, 'yyyy-MM-dd')
}

(5)获取两个日期相差天数

function dateDiff (sDate1, sDate2) {
    let arrDate, objDate1, objDate2, iDays;
    arrDate = sDate1.split('-');
    objDate1 = new Date(arrDate[1] + '/' + arrDate[2] + '/' + arrDate[0])
    arrDate = sDate2.split('-');
    objDate2 = new Date(arrDate[1] + '/' + arrDate[2] + '/' + arrDate[0]);
    iDays = parseInt(Math.abs(objDate1 - objDate2) / 1000 / 60 / 60 / 24); // 相差毫秒数转成天数
    return iDays;
}

 2、关于cookie的方法

(1)设置cookie

 /**
* 设置cookie
* @param name cookie名
* @param value cookie值
*/

function setCookie(name, value) {
	var Days = 30;
	var exp = new Date();
	exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
	document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
}

(2)获取cookie

 /**
* 获取cookie
* @param name cookie名
*/

function getCookie(name) {
	var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
	if(arr = document.cookie.match(reg))
		return unescape(arr[2]);
	else
		return null;
}

(3)删除cookie

function delCookie(name) {
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);
    var cval = getCookie(name);
    if (cval != null) {
      document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
    }
}

 3、缓存的一些方法

(1) 设置缓存

let setStorageItem = function(itemName,value){
    return window.localStorage.setItem(itemName,value);
}

(2)获取缓存

let getStorageItem = function(itemName){
	return window.localStorage.getItem(itemName);
}

(3)删除缓存

let clearStorage = function(){
	window.localStorage.clear();
}

4、数组的一些处理

(1) 比较两个数组是否相等

function arrayEqual(arr1, arr2) {
    if (arr1 === arr2) return true;
    if (arr1.length != arr2.length) return false;
    for (var i = 0; i < arr1.length; ++i) {
        if (arr1[i] !== arr2[i]) return false;
    }
    return true;
}

(2)数组去重

function removeR(arr, str) {
	for(var i = 0; i < arr.length; i++) {
		for(var j = i + 1; j < arr.length; j++) {
			if(arr[i][str] == arr[j][str]) {
				arr.splice(i, 1);
				j--
			}
		}
	}
	return arr;
};

5、正则判断

(1)邮箱格式正误

/**
 * 判断是否为邮箱地址
 * @param  {String}  str
 * @return {Boolean} 
 */

function isEmail(str) {
    return /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(str);
}

(2)手机号格式正误

/**
 * 判断是否为手机号
 * @param  {String|Number}  str
 * @return {Boolean} 
 */

function isPhoneNum(str) {
    return /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/.test(str)
}

 

你可能感兴趣的:(js,工具类)