项目常用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)
}

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自己写的一个网页开发常用效果与框架,可以自定义导出自己想要的部分。 1.通过帮助文档help.html查看所有效果与使用方法。 2.通过config.html配置符合你需要并导出js; 内容包含如下: A:效果类; 1.事件-同时兼容手机与pc的3种事件(start、move、end); 2.tab选项卡-各种切换6种; 3.电商产品主图-横向与纵向2种; 4.放大镜-电商主图放大镜、图鼠标悬停旁边出现放大版图效果各一个; 5.跑马灯-文字或图片不断档可支持鼠标悬停时停止; 6.仿alert弹窗-可以自定义样式,手机版pc版个一种; 7.列表下拉加载更多-伪数据加载与ajax异步加载个一种; 8.折叠菜单一个; 9.banner图效果-7种包含手机上支持手指滑动的; 10.时间轴-控制1种; 11.自定义滚动条-横向、纵向各一种; 12.临时禁用滚动条-禁用与启用方法各一个,也能禁用手机滚动条,同时解决px滚动条占用宽度问题。 13.图表等比例-使图片始终保持设定比例缩放等供3种不同形式; 14.回到顶部-点击回到浏览器顶部; 15.漂浮窗-小漂浮窗广告; 16.图集展示-偶尔能用到; 17.滚屏效果-手指上下滑动或鼠标滚轮滚动切换页面,可自己配一些动效!!!!!!; 18.常用表单验证; 19.左滑删除; 20.复选框全选与取消选中; 21.内容拖动!!!!!!; 22.dom输入; 23.单例定时器; 24.ios软键盘弹出fixed定位问题处理!!!!!!; B:架构类; 1.流程控制-主要解决多个ajax调用依赖问题; 2.面向对象的class方法-方便定义类与集成类; 3.require-实现模块化开发,简单实用; 提示:用!!!!!!标注结尾的在某些场景下可能出现bug;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值