123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- 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
- }
|