UNPKG

common-tools-new

Version:

常用的工具函数

309 lines (271 loc) 10 kB
module.exports = { /** * 10进制转16进制 * * 传入参数格式为: 一个参数时为:to16String(['',''])或者to16String("") * 多个参数时为:to16String("","") */ to16String:()=>{ //10进制转16进制, 传进来的参数以逗号隔开 let params = arguments; let arr = []; let type = Object .prototype .toString .call(params[0]); if (type.includes('Array')) { // 如果传进来的是数组。 params = params[0]; } let len = params.length; for (let i = 0; i < len; i++) { let item = params[i]; if (typeof params[i] == 'string') { item = item ?.trim(); } arr.push(item.toString(16).toLocaleUpperCase()); } console.log('16进制:', arr); return arr; } /** * 16进制转10进制 * * 传入参数格式为: 一个参数时为:to16String(['',''])或者to16String("") * 多个参数时为:to16String("","") */ to10String:()=> { //16进制转10进制, 传进来的参数以逗号隔开 let params = arguments; let arr = []; let type = Object .prototype .toString .call(params[0]); if (type.includes('Array')) { // 如果传进来的是数组。 params = params[0]; } let len = params.length; for (let i = 0; i < len; i++) { let item = params[i]; if (typeof params[i] == 'string') { item = item ?.trim(); } else { console.log('请传字符串类型10进制!', typeof arguments[i]); return typeof params[i]; } arr.push(parseInt(item, 16)); } console.log('10进制:', arr); return arr; } /** * //获取时间段内所有的日期 * @param start '2018-05-27' '2018-06-31 08:08:08' 会自动截取 只留年月日 * @param end '2018-06-31' '2018-06-31 08:08:08' * * 调用:getRangeTime('2018-05-27', '2018-06-31') */ getRangeDate:(start, end) =>{ var startTime = getDate(start); var endTime = getDate(end); var dateArr = []; while ((endTime.getTime() - startTime.getTime()) >= 0) { var year = startTime.getFullYear(); var month = (startTime.getMonth().toString().length === 1 && startTime.getMonth() !== 9) ? "0" + (parseInt(startTime.getMonth().toString(), 10) + 1) : (startTime.getMonth() + 1); var day = startTime .getDate() .toString() .length === 1 ? "0" + startTime.getDate() : startTime.getDate(); dateArr.push(year + "-" + month + "-" + day); startTime.setDate(startTime.getDate() + 1); } return dateArr; } /** * 将年月日字符串 转为时间格式 * @param {*} datestr '2018-06-31 08:08:08' '2018-05-27' '2018/05/27' '2018/06/31 08:08:08' * */ getDate:(datestr)=> { datestr = datestr .trim() .split(/\s+/); var temp = datestr[0] .replace(/\//g, "-") .split("-"); if (temp[1] === '01') { temp[0] = parseInt(temp[0], 10) - 1; temp[1] = '12'; } else { temp[1] = parseInt(temp[1], 10) - 1; } //new Date()的月份入参实际都是当前值-1 !!!!!!!!!!!! var date = new Date(temp[0], temp[1], temp[2]); return date; } /** * * @param {*} time 时间 * @param {*} symbolD 年月日的连接符 默认为- * @param {*} symbolH 时分秒的连接符 默认为: * * 示例:time ="2020-04-14T03:35:41.000Z"; 转为 2020-4-14 11:35:41 */ changeToDate:(time, symbolD = "-", symbolH = ":")=> { let d = time ? new Date(time) : new Date(); let times = d.getFullYear() + symbolD + (d.getMonth() + 1) + symbolD + d.getDate() + ' ' + d.getHours() + symbolH + d.getMinutes() + symbolH + d.getSeconds(); return times; } /** * //获取url参数并转为对象 * @param {*} url 地址url */ getUrlToObj:(url)=> { var url = url || window.location.search; var params = {}; if (url.indexOf("?") !== -1) { var str = url.split("?")[1]; var strArr = str.split("&"); for (var i = 0; i < strArr.length; i++) { var tmpArr = strArr[i].split("="); params[tmpArr[0]] = decodeURIComponent(tmpArr[1]); } } return params; } /** * //图片转为64字符串 * @param {*} file 图片file格式的文件 * @param {*} callback Base64传给回调函数 */ fileToBase64Url:(file, callback)=> { //1.修改图片信息 let base64Url = ''; const reader = new FileReader(); if (file) { reader.readAsDataURL(file); //URL格式的Base64字符串以表示所读取文件的内容。 } else { base64Url = ''; } // FileReader.onloadend 处理loadend事件。该事件在读取操作结束时(要么成功,要么失败)触发。 // 2.阅读器已经解析完毕,图片解析完毕后的操作 reader.onloadend = () => { // FileReader.result 只读 文件的内容。该属性仅在读取操作完成后才有效,数据的格式取决于使用哪个方法来启动读取操作。 base64Url = reader.result; //回调返回 callback && callback(base64Url); }; } /** * //设置cookie * @param {*} name 存储名 * @param {*} value 数据 * @param {*} days 存储天数 * * 返回值boolean */ setCookie:(name , value, days = 7)=> { //默认存days 7 天 name = name.replace(/^\s+|\s$/g, "") //去掉前后的空格,反正作对比时候出现问题 let Days = days; var exp = new Date(); exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000); //getTime() 方法可返回距 1970 年 1 月 1 日之间的毫秒数。 // document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();//escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。解码 unescape(string) //toGMTString() 方法可根据格林威治时间 (GMT) 把 Date 对象转换为字符串,并返回结果。 document.cookie = name + "=" + value + ";expires=" + exp.toGMTString(); //escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。解码 unescape(string) //toGMTString() 方法可根据格林威治时间 (GMT) 把 Date 对象转换为字符串,并返回结果。 console.log(document.cookie) if (getCookie(name)) { return true; } return false; } /** * //读取cookie * @param {*} name 存储名 * 返回值 对应的值 */ getCookie:(name )=> { name = name.replace(/^\s+|\s$/g, "") //去掉前后的空格,反正作对比时候出现问题 var cookieObj = {}; var cookies = document .cookie .split(";"); //获取到的数据是通过 ";" 分割的(a=1;b=2;c=3) //将其转为对象 ["a=1","b=2","c=3"] cookies.map(item => { item = item.split("=") item[0] = item[0].replace(/^\s?$/g, "") cookieObj[item[0]] = item[1] }) return cookieObj[name]; } /** * //删除cookie * @param {*} name 存储名 * 返回值boolean */ delCookie:(name )=> { name = name.replace(/^\s+|\s$/g, "") //去掉前后的空格,反正作对比时候出现问题 var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = getCookie(name) if (cval != null) { document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); let res = getCookie(name) //如果为空/undefined 就说明删除完成 if (!res) { return true } } return false; } /** * * @param {*} name 存储名 * @param {*} data 数据 * 返回值boolean */ //设置session setSession:(name , data)=> { name = name.replace(/^\s+|\s$/g, "") //去掉前后的空格,防止作对比时候出现问题 sessionStorage.setItem(name.replace(/^\s+|\s$/g, ""), JSON.stringify(data)); if (getSession(name)) { return true; } return false; } /** * //获取session * @param {*} name 存储名 * * 返回值 对应的值 */ getSession:(name ) =>{ name = name.replace(/^\s+|\s$/g, "") //去掉前后的空格,防止作对比时候出现问题 let sessionData = sessionStorage.getItem(name); sessionData = JSON.parse(sessionData) return sessionData; } /** * 删除session * @param {*} name 存储名 * * 返回值 boolean */ delSession:(name ) =>{ name = name.replace(/^\s+|\s$/g, "") //去掉前后的空格,防止作对比时候出现问题 sessionStorage.removeItem(name) let result = getSession(name); //如果为空就说明删除成功 if (!result) { return true; } return false; } }