const getDistance = function(lat1, lng1, lat2, lng2) { let rad = Math.PI / 180.0; var radLat1 = lat1 * rad; var radLat2 = lat2 * rad; var a = radLat1 - radLat2; var b = lng1 * rad - lng2 * rad; var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); s = s * 6378.137; // EARTH_RADIUS; s = Math.round(s * 10000) / 10000; //输出为公里 s = s.toFixed(2); //保留2位小数 return s; } //计算矩形范围,最长角是不对的不过能满足基本需求 半径的单位是M const getRectangle = function(lat, lng, radius) { let deg = 2 * Math.PI * 6378137 / 360.0; //地球周长 每一度的距离 2πR let dpmLat = 1 / deg; let radiusLat = dpmLat * radius; let minLat = lat - radiusLat; let maxLat = lat + radiusLat; let mpdLng = deg * Math.cos(lat * (3.141592653 / 180)) let dpmLng = 1 / mpdLng; let radiusLng = dpmLng * radius; let minLng = lng - radiusLng; // 最小经度 let maxLng = lng + radiusLng; // 最大经度 return { minLat: minLat, maxLat: maxLat, minLng: minLng, maxLng: maxLng }; } const djsFull = function(t) { var d = Math.floor(t / 86400); var h = Math.floor(t % 86400 / 3600); var m = Math.floor(t % 3600 / 60); var s = Math.floor(t % 60); return { d: this.addzero(d), h: this.addzero(h), m: this.addzero(m), s: this.addzero(s) } } //m {y:2020,m:8,month:'08'} const upMonth = function(m){ let _m = parseInt(m.m) - 1; let _y = parseInt(m.y); if(_m == 0){ _y = _y - 1; _m = 12; } return { y:_y, m:this.addzero(_m) } } const downMonth = function(m){ let _m = parseInt(m.m) + 1; let _y = parseInt(m.y); if(_m == 13){ _y = _y+1; _m = 1; } return { y:_y, m:this.addzero(_m) } } const getTimeArr = function(day) { let date1 = new Date(); let date2 = new Date(date1); day = day ? day : 0; date2.setDate(date1.getDate() + day); let y = date2.getFullYear(); let m = date2.getMonth() + 1; let d = date2.getDate(); let h = date2.getHours(); let i = date2.getMinutes(); let s = date2.getSeconds(); let dt = '上午'; if(h >=9 && h<=11){ dt = '上午'; }else if(h <9 && h>5){ dt = '早上'; }else if(h>11 && h<14){ dt = '中午'; }else if(h>=14 && h<18){ dt = '下午'; }else{ dt = '晚上'; } let w = date2.getDay(); switch (w) { case 1: w = '星期一'; break; case 2: w = '星期二'; break; case 3: w = '星期三'; break; case 4: w = '星期四'; break; case 5: w = '星期五'; break; case 6: w = '星期六'; break; case 0: w = '星期日'; break; } return { y: y, m: this.addzero(m), d: this.addzero(d), h: this.addzero(h), i: this.addzero(i), s: this.addzero(s), w: w, t: dt } } const datetimeToUnix = function(str) { var _arr = str.split(' '); var _day = _arr[0].split('-'); _arr[1] = (_arr[1] == null) ? '0:0:0' : _arr[1]; var _time = _arr[1].split(':'); for (var i = _day.length - 1; i >= 0; i--) { _day[i] = isNaN(parseInt(_day[i])) ? 0 : parseInt(_day[i]); } for (var i = _time.length - 1; i >= 0; i--) { _time[i] = isNaN(parseInt(_time[i])) ? 0 : parseInt(_time[i]); } _time[2] = 0; var _temp = new Date(_day[0], _day[1] - 1, _day[2], _time[0], _time[1], _time[2]); return _temp.getTime() / 1000; } const unixToDatetime = function(format, time) { var _temp = (time != null) ? new Date(time * 1000) : new Date(); var _return = ''; if (/Y-m-d/.test(format)) { var _day = [_temp.getFullYear(), this.addzero(1 + _temp.getMonth()), this.addzero(_temp.getDate())]; _return = _day.join('-'); } if (/H:i:s/.test(format)) { var _time = [this.addzero(_temp.getHours()), this.addzero(_temp.getMinutes()), this.addzero(_temp.getSeconds())]; _return += ' ' + _time.join(':'); } return _return; } const addzero = function(i) { if (i <= 9) { return '0' + i; } else { return i; } } export default { getDistance, getRectangle, djsFull, getTimeArr, datetimeToUnix, unixToDatetime, addzero, upMonth, downMonth }