// 根据生日的月份和日期,计算星座。 export const getAstro = (m, d) => { let result = "摩羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手摩羯".substr(m*2-(d<"102223444433".charAt(m-1)- -19)*2,2) + "座"; let list = ['白羊座', '金牛座', '双子座', '巨蟹座', '狮子座', '处女座', '天秤座', '天蝎座', '射手座', '摩羯座', '水瓶座', '双鱼座']; return {name: result, id: list.indexOf(result)} } // 根据出生日期计算年龄 格式:YYYY-MM-dd export const getAge = (strAge) => { var birArr = strAge.split("-"); var birYear = birArr[0]; var birMonth = birArr[1]; var birDay = birArr[2]; d = new Date(); var nowYear = d.getFullYear(); var nowMonth = d.getMonth() + 1; //记得加1 var nowDay = d.getDate(); var returnAge; if (birArr == null) { return false }; var d = new Date(birYear, birMonth - 1, birDay); if (d.getFullYear() == birYear && (d.getMonth() + 1) == birMonth && d.getDate() == birDay) { if (nowYear == birYear) { returnAge = 0; // } else { var ageDiff = nowYear - birYear; // if (ageDiff > 0) { if (nowMonth == birMonth) { var dayDiff = nowDay - birDay; // if (dayDiff < 0) { returnAge = ageDiff - 1; } else { returnAge = ageDiff; } } else { var monthDiff = nowMonth - birMonth; // if (monthDiff < 0) { returnAge = ageDiff - 1; } else { returnAge = ageDiff; } } } else { return "出生日期晚于今天,数据有误"; //返回-1 表示出生日期输入错误 晚于今天 } } return returnAge; } else { return ("输入的日期格式错误!"); } } /** * 根据时间戳转年月日 格式:YYYY-MM-dd HH:mm:ss * @param {Number} = [timestamp] 时间戳,精确到毫秒 * @param {Boolean} = [show] 显示到哪个时间段,默认显示到秒,可选值d(天),m(分),s(秒) * */ export const timestampToTime = (timestamp, show = 's') => { //时间戳为10位需*1000,时间戳为13位的话不需乘1000 let date = new Date(timestamp); let Y = date.getFullYear(); let M = (date.getMonth() + 1 < 10 ?'0' + (date.getMonth() +1) : date.getMonth() +1); let D = date.getDate(); let h = (date.getHours() < 10 ?('0' + date.getHours()) : date.getHours()) +':'; let m = (date.getMinutes() < 10 ?('0' + date.getMinutes()) : date.getMinutes()); let s = (date.getSeconds() < 10 ?('0' + date.getSeconds()) : date.getSeconds()) if (show === "s") { return Y + "-" + M + "-" + D + " " + h + m + ':' + s; } else if (show === "m") { return Y + "-" + M + "-" + D + " " + h + m; } else { return Y + "-" + M + "-" + D; } } /** * 根据时间戳转今天、昨天、前天 * @param {Number} = [timestamp] 时间戳,精确到毫秒 * */ export const timestampFormat = (timestamp) => { function zeroize( num ) { return (String(num).length == 1 ? '0' : '') + num; } var curTimestamp = new Date().getTime(); //当前时间戳 var timestampDiff = curTimestamp - timestamp; // 参数时间戳与当前时间戳相差秒数 // console.log(curTimestamp, timestampDiff) var curDate = new Date( curTimestamp ); // 当前时间日期对象 var tmDate = new Date( timestamp ); // 参数时间戳转换成的日期对象 var Y = tmDate.getFullYear(), m = tmDate.getMonth() + 1, d = tmDate.getDate(); var H = tmDate.getHours(), i = tmDate.getMinutes(), s = tmDate.getSeconds(); if ( timestampDiff < 3600 ) { // 一分钟以内 return "刚刚"; // } else if( timestampDiff < 3600 ) { // 一小时前之内 // return Math.floor( timestampDiff / 60000 ) + "分钟前"; } else if ( curDate.getFullYear() == Y && curDate.getMonth()+1 == m && curDate.getDate() == d ) { return '今天' + zeroize(H) + ':' + zeroize(i); } else { var newDate = new Date( (curTimestamp - 86400000) ); // 参数中的时间戳加一天转换成的日期对象 if ( newDate.getFullYear() == Y && newDate.getMonth()+1 == m && newDate.getDate() == d ) { return '昨天 ' + zeroize(H) + ':' + zeroize(i); } else if ( curDate.getFullYear() == Y ) { return zeroize(m) + '月' + zeroize(d) + '日 ' + zeroize(H) + ':' + zeroize(i); } else { return Y + '年' + zeroize(m) + '月' + zeroize(d) + '日 ' + zeroize(H) + ':' + zeroize(i); } } } // 判断是否在微信浏览器 true是 export const isWeiXinBrowser = () => { // #ifdef H5 // window.navigator.userAgent属性包含了浏览器类型、版本、操作系统类型、浏览器引擎类型等信息,这个属性可以用来判断浏览器类型 let ua = window.navigator.userAgent.toLowerCase() // 通过正则表达式匹配ua中是否含有MicroMessenger字符串 if (ua.match(/MicroMessenger/i) == 'micromessenger') { return true } else { return false } // #endif return false } /* * 获取android手机mac地址 */ export const getMacAddress = () =>{ let mac = "xxx-xxx-xxx" if(uni.getSystemInfoSync().osName === "android"){ var Context = plus.android.importClass("android.content.Context"); var WifiManager = plus.android.importClass("android.net.wifi.WifiManager"); var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE); var WifiInfo = plus.android.importClass("android.net.wifi.WifiInfo"); var wifiInfo = wifiManager.getConnectionInfo(); mac = wifiInfo.getBSSID() } else if (uni.getSystemInfoSync().osName === "ios") { mac = plus.device.uuid // ios 获取不到,所以获取设备id } return mac } // 生成UUID export const getUUID = () => { var s = []; var hexDigits = "0123456789abcdef"; for (var i = 0; i < 36; i++) { s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); } s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010 s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 // s[8] = s[13] = s[18] = s[23] = "-"; 不要横杆 s[8] = s[13] = s[18] = s[23]; var uuid = s.join(""); return uuid; } // 秒转00:00 export const secondFormat = (duration) =>{ let min = parseInt(duration / 60); let sec = duration % 60; min = min < 10 ? '0' + min : min; sec = sec < 10 ? '0' + sec : sec; return min + ':' + sec; } // 数字转换为万 千万 百万 export const numberConversion = (value) =>{ const newValue = ['', '', ''] let fr = 1000 let num = 3 let txt = '' let fm = 1 while (value / fr >= 1) { fr *= 10 num += 1 } if (num <= 4) { // 千 newValue[0] = parseInt(value) + '' newValue[1] = '' } else if (num <= 8) { // 万 txt = parseInt(num - 4) / 3 > 1 ? '千万' : '万' fm = txt === '万' ? 10000 : 10000000 if (value % fm === 0) { newValue[0] = parseInt(value / fm) + '' } else { newValue[0] = parseFloat(value / fm).toFixed(1) + '' } newValue[1] = txt } else if (num <= 16) { // 亿 txt = (num - 8) / 3 > 1 ? '千亿' : '亿' txt = (num - 8) / 4 > 1 ? '万亿' : txt txt = (num - 8) / 7 > 1 ? '千万亿' : txt fm = 1 if (txt === '亿') { fm = 100000000 } else if (txt === '千亿') { fm = 100000000000 } else if (txt === '万亿') { fm = 1000000000000 } else if (txt === '千万亿') { fm = 1000000000000000 } if (value % fm === 0) { newValue[0] = parseInt(value / fm) + '' } else { newValue[0] = parseFloat(value / fm).toFixed(1) + '' } newValue[1] = txt } if (value < 1000) { newValue[0] = value + '' newValue[1] = '' } return newValue.join('') } /* * 米转公里、公里转米 * @param {string} dis 米/公里 * @param {string} type km(默认-米转公里) m(公里转米) * return 距离 */ export const distanceTransform = (dis, type="km") => { if (type === "km") { if (dis < 1000){ return parseInt(dis)+"m"; } else { return (Math.round(dis/100)/10).toFixed(1) + "Km" } } else { if(parseFloat(dis) >= 1){ return (Math.round(dis * 10) / 10)+"Km"; }else{ return parseInt(dis*1000)+"m"; } } } /* * 根据经纬度计算两点之间的距离 * @param {string} lat1 开始纬度 * @param {string} lng1 开始经度 * @param {string} lat2 结束纬度 * @param {string} lng2 结束经度 * return 距离 */ export const computeLngLatDistance = (lat1, lng1, lat2, lng2) =>{ let radLat1 = lat1 * Math.PI / 180.0; let radLat2 = lat2 * Math.PI / 180.0; let a = radLat1 - radLat2; let b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0; let 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; s = Math.round(s * 10000) / 10000; // 单位千米 console.log("...........s.........", s) return distanceTransform(s, 'm') } /* * 版本号比较 * @param {string} curV 当前版本号 * @param {string} reqV 比较版本号 * return 0-旧版 1-稳定版 2-新版 */ export const versionCompare = (curV,reqV) =>{ let arr1=curV.split('.'); let arr2=reqV.split('.'); //将两个版本号拆成数字 let minL= Math.min(arr1.length,arr2.length); let pos=0; //当前比较位 let diff=0; //当前为位比较是否相等 //逐个比较如果当前位相等则继续比较下一位 while(pos0) { return 2 console.log('当前已是新版本') }else if (diff==0) { return 1 console.log('当前稳定版') }else{ return 0 console.log('当前旧版本') } } /** * 检查是否打开GPS功能 * */ export const checkOpenGPSService = (callback) => { let system = uni.getSystemInfoSync();// 获取系统信息 if (system.platform === 'android') { // 判断平台 var context = plus.android.importClass("android.content.Context"); var locationManager = plus.android.importClass("android.location.LocationManager"); var main = plus.android.runtimeMainActivity(); var mainSvr = main.getSystemService(context.LOCATION_SERVICE); if (!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)) { callback(false) uni.showModal({ title: '提示', content: '请打开定位服务功能',// 不显示取消按钮 success(res) { if (res.confirm) { var Intent = plus.android.importClass('android.content.Intent'); var Settings = plus.android.importClass('android.provider.Settings'); var intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); main.startActivity(intent); // 打开系统设置GPS服务页面 uni.setStorageSync('refuse', true) } else { uni.setStorageSync('refuse', true) } } }); } else { console.log('android.....11111........GPS功能已开启'); callback(true) } } else if (system.platform === 'ios') { var cllocationManger = plus.ios.importClass("CLLocationManager"); var enable = cllocationManger.locationServicesEnabled(); var status = cllocationManger.authorizationStatus(); console.log("enable:" + enable); console.log("status:" + status); if (enable && status != 2) { console.log("ios.......11111111......手机系统的定位已经打开"); callback(true) } else { callback(false) console.log("手机系统的定位没有打开"); // 定位没有开启时 提示用户是否开启 // uni.showToast({ // title: "目前未开启位置,该功能无法使用", // icon: "none" // }) // plus.nativeUI.confirm("定位权限没有开启,是否去开启?", function(e) { // if (e.index === 1) { // var UIApplication = plus.ios.importClass("UIApplication"); // var application2 = UIApplication.sharedApplication(); // var NSURL2 = plus.ios.importClass("NSURL"); // var setting2 = NSURL2.URLWithString("app-settings:"); // 打开应用权限 // // var setting2 = NSURL2.URLWithString("App-Prefs:root=Privacy&path=LOCATION"); // 打开隐私中到定位权限 // application2.openURL(setting2); // plus.ios.deleteObject(setting2); // plus.ios.deleteObject(NSURL2); // plus.ios.deleteObject(application2); // console.log("ios.......2222222........手机系统的定位已经打开") // callback(true) // } // }, { // "buttons": ["不开启", "去设置"], // "verticalAlign": "center" // }); } plus.ios.deleteObject(cllocationManger); } } // 每天首次打开弹出空投提示 export const isNotSameDay = function () { try { let startTime = uni.getStorageSync("discoverTime"); if (startTime && startTime !== " ") { startTime = Number(startTime); } else { uni.setStorageSync('isGet', false) uni.setStorageSync("discoverTime", +new Date()); return Promise.resolve(true); } const startTimeMs = new Date(startTime).setHours(0, 0, 0, 0); const endTimeMs = new Date().setHours(0, 0, 0, 0); uni.setStorageSync("discoverTime", +new Date()); const result = startTimeMs === endTimeMs ? false : true; if (result) uni.setStorageSync('isGet', false); console.log("resultresultresult", result); if (result) { return Promise.resolve(result); } else { return Promise.resolve(result); } } catch (err) { console.log("err", err); return Promise.resolve(false); } }