const formatTime = date => { const year = date.getFullYear(); const month = date.getMonth() + 1; const day = date.getDate(); const hour = date.getHours(); const minute = date.getMinutes(); const second = date.getSeconds(); var t1 = [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join( ':'); var t2 = [year, month, day].map(formatNumber).join('-'); var time = { t1: t1, t2: t2 }; return time; }; function formatTimeComm(date, format) { var formateArr = ['Y', 'M', 'D', 'h', 'm', 's']; var returnArr = []; returnArr.push(date.getFullYear()); returnArr.push(formatNumber(date.getMonth() + 1)); returnArr.push(formatNumber(date.getDate())); returnArr.push(formatNumber(date.getHours())); returnArr.push(formatNumber(date.getMinutes())); returnArr.push(formatNumber(date.getSeconds())); for (var i in returnArr) { format = format.replace(formateArr[i], returnArr[i]); } return format; } /** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ const getPreMonth = date => { var arr = date.split('-'); var year = arr[0]; //获取当前日期的年份 var month = arr[1]; //获取当前日期的月份 var day = arr[2]; //获取当前日期的日 var days = new Date(year, month, 0); days = days.getDate(); //获取当前日期中月的天数 var year2 = year; var month2 = parseInt(month) - 1; if (month2 == 0) { //如果是1月份,则取上一年的12月份 year2 = parseInt(year2) - 1; month2 = 12; } var day2 = day; var days2 = new Date(year2, month2, 0); days2 = days2.getDate(); if (day2 > days2) { //如果原来日期大于上一月的日期,则取当月的最大日期。比如3月的30日,在2月中没有30 day2 = days2; } if (month2 < 10) { month2 = '0' + month2; //月份填补成2位。 } var t1 = year + '-' + month; var t2 = year2 + '-' + month2; var time = { t1: t1, t2: t2 }; return time; }; const formatNumber = n => { n = n.toString(); return n[1] ? n : '0' + n; }; const formatTimes = t => { let second = t % 60; let minute = parseInt(t / 60 % 60); let hour = parseInt(t / 60 / 60); return formatNumber(hour) + ':' + formatNumber(minute) + ":" + formatNumber(second); }; const formatDayTimes = t => { let second = t % 60; let minute = parseInt(t / 60 % 60); let hour = parseInt(t / 60 / 60 % 24); let day = parseInt(t / 60 / 60 / 24); return formatNumber(day) + '天' + formatNumber(hour) + ':' + formatNumber(minute) + ":" + formatNumber(second); }; /** * 判断此对象是否是Object类型 * @param {Object} obj */ function isObject(obj) { return Object.prototype.toString.call(obj) === '[object Object]'; } ; /** * 判断此类型是否是Array类型 * @param {Array} arr */ function isArray(arr) { return Object.prototype.toString.call(arr) === '[object Array]'; } ; /** * 深度比较两个对象是否相同 * @param {Object} oldData * @param {Object} newData */ function equalsObj(oldData, newData) { // 类型为基本类型时,如果相同,则返回true if (oldData === newData) return true; if (isObject(oldData) && isObject(newData) && Object.keys(oldData).length === Object.keys(newData).length) { // 类型为对象并且元素个数相同 // 遍历所有对象中所有属性,判断元素是否相同 for (const key in oldData) { if (oldData.hasOwnProperty(key)) { if (!equalsObj(oldData[key], newData[key])) // 对象中具有不相同属性 返回false return false; } } } else if (isArray(oldData) && isArray(oldData) && oldData.length === newData.length) { // 类型为数组并且数组长度相同 for (let i = 0, length = oldData.length; i < length; i++) { if (!equalsObj(oldData[i], newData[i])) // 如果数组元素中具有不相同元素,返回false return false; } } else { // 其它类型,均返回false return false; } // 走到这里,说明数组或者对象中所有元素都相同,返回true return true; } ; //时间戳转化 function transTime(date) { var date = new Date(parseInt(date) * 1000); var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); var hour = date.getHours(); var minute = date.getMinutes(); var second = date.getSeconds(); return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':'); } ; // 节流 function throttle(fn, gapTime) { if (gapTime == null || gapTime == undefined) { gapTime = 1500; } let _lastTime = null; // 返回新的函数 return function() { let _nowTime = +new Date(); if (_nowTime - _lastTime > gapTime || !_lastTime) { fn.apply(this, arguments); //将this和参数传给原函数 _lastTime = _nowTime; } }; }; const isMobile = (value) => { var reg = /^1[3|4|5|6|7|8|9][0-9]{9}$/; //验证规则 var flag = reg.test(value); if (!flag) { return false } else { return true } } const convertUrlObj = (data) => { var _result = []; for (var key in data) { var value = data[key]; if (value.constructor == Array) { value.forEach(function(_value) { _result.push(key + "=" + _value); }); } else { _result.push(key + '=' + value); } } return _result.join('&'); } // 隐藏手机号中间四位 function styleHintText(tel) { if (tel) { var reg = /^(\d{3})\d{4}(\d{4})$/; return tel.replace(reg, "$1****$2"); } return ''; } function 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; 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; } function formatLocation(longitude, latitude) { if (typeof longitude === 'string' && typeof latitude === 'string') { longitude = parseFloat(longitude) latitude = parseFloat(latitude) } longitude = longitude.toFixed(2) latitude = latitude.toFixed(2) return { longitude: longitude.toString().split('.'), latitude: latitude.toString().split('.') } } function removeHtml(content) { var temp = content.replace(/<\/?.+?>/g, ""); var result = temp.replace(/ /g, ""); var test = result.replace(/
/ig, ""); var text = test.replace(/ /ig, ""); return text; } function styleDistanceKm(distance) { var distanceS = ''; var disFloat = parseFloat(distance); if (disFloat > 1000) { disFloat = disFloat / 1000; distanceS = disFloat.toFixed(2) + 'km'; } else { distanceS = distance + 'm'; } return distanceS; } // 隐藏身份证 function hideCard(content) { var card = content; var strcard = card.replace(/^(.{4})(?:\d+)(.{4})$/, "$1******$2"); return strcard; } //判断时间是否大于当前时间 function checkDate(date) { var myDate = new Date(); var now = myDate.valueOf(); var time = new Date(date).valueOf(); if (now > time) { return false; } else { return true; } } /*比较t1 t2*/ function getTimeSpan(str1, str2) { var data = { day: 0, hour: 0, minutes: 0, seconds: 0, isExp: true }; function cut2(t) { return t.toString().length > 1 ? t : 0 + "" + t; } if (!str1 || !str2) { data.isExp = false; return data; } var t1 = new Date((str1 * 1)); var t2 = new Date((str2 * 1)); if (t2 >= t1) { data.isExp = false; return data; } data.isExp = true; var dateDiff = t1 - t2; //时间差的毫秒数 data.day = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数 var leave1 = dateDiff % (24 * 3600 * 1000) //计算天数后剩余的毫秒数 data.hour = cut2(Math.floor(leave1 / (3600 * 1000))) //计算出小时数 //计算相差分钟数 var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数 data.minutes = cut2(Math.floor(leave2 / (60 * 1000))) //计算相差分钟数 //计算相差秒数 var leave3 = leave2 % (60 * 1000); data.seconds = cut2(Math.round(leave3 / 1000)) return data; } function preText(pretext) { if(pretext){ return pretext.replace(/\r\n/g, '
') .replace(/\n/g, '
') // .replace(/\s/g, ' ') }else{ return ''; } } module.exports = { formatTime: formatTime, formatTimes: formatTimes, formatTimeComm: formatTimeComm, formatDayTimes: formatDayTimes, equalsObj: equalsObj, isObject: isObject, isArray: isArray, transTime: transTime, throttle: throttle, getPreMonth: getPreMonth, isMobile: isMobile, convertUrlObj: convertUrlObj, getDateDiff: getDateDiff, styleHintText: styleHintText, formatLocation: formatLocation, removeHtml: removeHtml, styleDistanceKm: styleDistanceKm, hideCard: hideCard, checkDate: checkDate, getTimeSpan: getTimeSpan, preText: preText };