export function formatDateTime(date) { var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? ('0' + m) : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; return y + '-' + m + '-' + d; } export function parseTime(time, cFormat) { if (arguments.length === 0) { return null } const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}' let date if (typeof time === 'object') { date = time } else { if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { time = parseInt(time) } if ((typeof time === 'number') && (time.toString().length === 10)) { time = time * 1000 } date = new Date(time) } const formatObj = { y: date.getFullYear(), m: date.getMonth() + 1, d: date.getDate(), h: date.getHours(), i: date.getMinutes(), s: date.getSeconds(), a: date.getDay() } const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { let value = formatObj[key] // Note: getDay() returns 0 on Sunday if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] } if (result.length > 0 && value < 10) { value = '0' + value } return value || 0 }) return time_str } //时间戳转时间,精确到年月日时分秒 export function getTimeToDate(time) { if(time){ var date = new Date(time); var y = date.getFullYear(); var m = toNum2(date.getMonth() + 1); var d = toNum2(date.getDate()); var h = toNum2(date.getHours()); var mm = toNum2(date.getMinutes()); var s = toNum2(date.getSeconds()); let currentdate=y + '-' + m + '-' + d+' '+h+':'+mm+':'+s; return currentdate; }else{ return "" } } //月日时分秒不足两位数时,加0 export function toNum2(num){ if(num.toString().length<2){ return '0'+num }else{ return num } } export function getCurrentDate() { let date = new Date(); let y = date.getFullYear(); let MM = date.getMonth() + 1; MM = MM < 10 ? ('0' + MM) : MM; let d = date.getDate(); d = d < 10 ? ('0' + d) : d; let h = date.getHours(); h = h < 10 ? ('0' + h) : h; let m = date.getMinutes(); m = m < 10 ? ('0' + m) : m; let s = date.getSeconds(); s = s < 10 ? ('0' + s) : s; return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s; } /** * 获取树形结构数据 */ export function getTree(tree) { let arr = []; if (!!tree && tree.length !== 0) { tree.forEach(item => { let obj = {}; obj.id = parseInt(item.id); obj.name = item.text; if (item.routePath) { obj.path = item.routePath; } if(item.url){ obj.url = item.url; } if (item.type === '0') { obj.hidden = false; } else if (item.type === '1') { obj.hidden = false; } else if (item.type === '2') { obj.hidden = true; } else if (item.type === '3') { obj.hidden = true; } if (item.icon) { if (item.icon.substr(0, 2) !== "fa") { obj.icon = item.icon.replace(/\s+/g, " ");; } } //obj.icon = "iconfont icon-shebei"; obj.child = getTree(item.children); // 递归调用 arr.push(obj); }); } return arr; } export function getWorkTime(start, end) { start = new Date(start); end = new Date(end); const at = 8.5, bt = 1.5, ct = 6, dt = 16, startDate = start.toLocaleDateString(), // 日期 endDate = end.toLocaleDateString(); let res = (end - start) / 1000 / 3600; // 同一天 if (startDate === endDate) { if (start.getHours() < 12 && end.getHours() > 12) { res = res - bt; } } else { // 相差一天 res = res - at - ct; if (start.getHours() < 12) { res = res - bt; } if (end.getHours() > 12) { res = res - bt; } // 超过一天 const cDate = (new Date(endDate) - new Date(startDate)) / 3600 / 24 / 1000; if (cDate > 1) { res = res - dt * (cDate - 1); } } return res; } export function dateDifference(faultDate, completeTime) { // let d1 = new Date(faultDate); // let d2 = new Date(completeTime); var stime = new Date(faultDate).getTime(); var etime = new Date(completeTime).getTime(); var usedTime = etime - stime; //两个时间戳相差的毫秒数 var days = Math.floor(usedTime / (24 * 3600 * 1000)); // //计算出小时数 var leave1 = usedTime % (24 * 3600 * 1000); //计算天数后剩余的毫秒数 var hours = Math.floor(leave1 / (3600 * 1000)); // //计算相差分钟数 // var leave2=leave1%(3600*1000); //计算小时数后剩余的毫秒数 // var minutes=Math.floor(leave2/(60*1000)); // // var time = days + "天"+hours+"时"+minutes+"分"; var time = hours; return time; } //日期转时间戳 export function dataToTime(faultDate) { var time = new Date(faultDate).getTime();//13位时间戳 return time; } //当前时间戳,精确到时分秒 export function getCurrentTime() { var timestamp = (new Date()).getTime(); return timestamp; } //当前时间戳,精确到年月日 export function getCurrentDateTime() { var date = new Date(); var y = date.getFullYear(); var m = date.getMonth() + 1; var d = date.getDate(); let currentdate=y + '-' + m + '-' + d; var timestamp = (new Date(currentdate)).getTime(); return timestamp; } //正则验证手机号 export function regularMobile(val){ var reg=/^1\d{10}$/;//验证手机号 return reg.test(val) } //正则验证固定电话 export function regularTelephone(val){ var reg=/^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/; return reg.test(val) } //正则验证邮箱 export function regularEmail(val){ var reg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/;//验证邮箱 return reg.test(val) } //正则验证正整数和0 export function regularPositiveInteger(val){ var reg=/^([1-9]\d*|[0]{1,1})$/; return reg.test(val) } //验证密码输入规范,6到20位,由数字和字母组成,并且要同时含有数字和字母。 export function regularPassword(val){ var reg=/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$/ return reg.test(val) } //验证用户名输入规范,用户名必须是4到16位(字母,数字,下划线,减号)。 // export function regularUsername(val){ // var reg=/^[a-zA-Z]\w{3,15}$/ // return reg.test(val) // } // 验证用户名输入规范,用户名必须是英文和数字 export function regularUsername(val){ var reg=/^[0-9a-zA-Z]+$/ return reg.test(val) } /** * 存储localStorage */ export const setStore = (name, content) => { if (!name) return; if (typeof content !== "string") { content = JSON.stringify(content); } window.localStorage.setItem(name, content); }; /** * 存储可过期的localstorage * @param key * @param value */ export function setLocalStorageAndTime (key, value) { if (!key) return; if (typeof value !== "string") { value = JSON.stringify(value); } window.localStorage.setItem(key, JSON.stringify({ data: value, time: new Date().getTime() })) } /** * 获取localStorage */ export const getStore = name => { if (!name) return; return window.localStorage.getItem(name); }; /** * 获取有效期内的数据 * @param key * @param exp * @returns {null|*} */ export function getLocalStorageAndTime (key) { // 获取数据 const exp = 1000*60*60*24*3;//设置过期时间为3天 let data = window.localStorage.getItem(key) if (!data) return null let dataObj = JSON.parse(data) // 与过期时间比较 if (new Date().getTime() - dataObj.time > exp) { // 过期删除返回null removeStore(key) console.log('信息已过期') return null } else { return JSON.parse(dataObj.data) } } /** * 删除localStorage */ export const removeStore = name => { if (!name) return; window.localStorage.removeItem(name); };