Kaynağa Gözat

修复时间戳转换不准确 -zzx

zouzexu 7 ay önce
ebeveyn
işleme
3a2d960bfc
2 değiştirilmiş dosya ile 116 ekleme ve 133 silme
  1. 3 3
      my/vipActivation/index.vue
  2. 113 130
      utils/tool.js

+ 3 - 3
my/vipActivation/index.vue

@@ -43,7 +43,7 @@
 	import {refreshVip} from '@/api/common.js'
 	import { selectActivationCode,getActivationList } from '@/api/vipActivation.js'
 	import { levelImgName } from '@/utils/config.js'
-	import{parseDate} from '@/utils/tool.js'
+	import{timestampToDate} from '@/utils/tool.js'
 	export default {
 		data() {
 			return {
@@ -74,7 +74,7 @@
 			get_userinfo(){
 				refreshVip().then(res=>{
 					res.content.map((item)=>{
-						this.expireTime=parseDate(item.expirationTime, '{y}-{m}-{d} {h}:{m}:{s}' )
+						this.expireTime=timestampToDate(item.expirationTime)
 					})
 				})
 			},
@@ -84,7 +84,7 @@
 				getActivationList().then(res=>{
 					if(res.state=='Success'){
 						res.content.content.map((item)=>{
-							item.useTime= parseDate(item.useTime,'{y}-{m}-{d} {h}:{m}:{s}')
+							item.useTime= timestampToDate(item.useTime)
 						})
 						this.activationList=res.content.content
 					}

+ 113 - 130
utils/tool.js

@@ -1,99 +1,77 @@
 //防抖debounce代码:
-export function debounce(fn,delay=500) {
-  var timeout = null; // 创建一个标记用来存放定时器的返回值
-  return function (e) {
-      // 每当用户输入的时候把前一个 setTimeout clear 掉
-      clearTimeout(timeout); 
-      // 然后又创建一个新的 setTimeout, 这样就能保证interval 间隔内如果时间持续触发,就不会执行 fn 函数
-      timeout = setTimeout(() => {
-          fn.apply(this, arguments);
-      }, delay);
-  };
+export function debounce(fn, delay = 500) {
+	var timeout = null; // 创建一个标记用来存放定时器的返回值
+	return function(e) {
+		// 每当用户输入的时候把前一个 setTimeout clear 掉
+		clearTimeout(timeout);
+		// 然后又创建一个新的 setTimeout, 这样就能保证interval 间隔内如果时间持续触发,就不会执行 fn 函数
+		timeout = setTimeout(() => {
+			fn.apply(this, arguments);
+		}, delay);
+	};
 }
 
 // 时间戳转换
-export function parseDate(time, cFormat) {
-  if (arguments.length === 0) {
-    return null
-  }
-  const format = cFormat || '{y}-{m}-{d}'
-  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(/{([ymdhisa])+}/g, (result, key) => {
-    const value = formatObj[key]
-    if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
-    return value.toString().padStart(2, '0')
-  })
-  return time_str
+export function timestampToDate(timestamp) {
+	// 定义日期格式对应的映射  
+	const date = new Date(timestamp);
+	const year = date.getFullYear();
+	const month = String(date.getMonth() + 1).padStart(2, '0');
+	const day = String(date.getDate()).padStart(2, '0');
+	const hours = String(date.getHours()).padStart(2, '0');
+	const minutes = String(date.getMinutes()).padStart(2, '0');
+	const seconds = String(date.getSeconds()).padStart(2, '0');
+	return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
 }
 
 
 // 返回两个经纬度之间的距离 单位米
-const earthDistance = function (location1, location2) {
-	    const lat1 = parseFloat(location1.lat);
-	    const lng1 = parseFloat(location1.lng);
-	    const lat2 = parseFloat(location2.lat);
-	    const lng2 = parseFloat(location2.lng);
-	
-	    const EARTH_RADIUS = 6378137.0; //单位M
-	    const PI = Math.PI;
-	
-	    function getRad(d) {
-	        return d * PI / 180.0;
-	    }
-	
-	    let f = getRad((lat1 + lat2) / 2);
-	    let g = getRad((lat1 - lat2) / 2);
-	    let l = getRad((lng1 - lng2) / 2);
-	
-	    let sg = Math.sin(g);
-	    let sl = Math.sin(l);
-	    let sf = Math.sin(f);
-	
-	    let s, c, w, r, d, h1, h2;
-	    let a = EARTH_RADIUS;
-	    let fl = 1 / 298.257;
-	
-	    sg = sg * sg;
-	    sl = sl * sl;
-	    sf = sf * sf;
-	
-	    s = sg * (1 - sl) + (1 - sf) * sl;
-	    c = (1 - sg) * (1 - sl) + sf * sl;
-	
-	    w = Math.atan(Math.sqrt(s / c));
-	    r = Math.sqrt(s * c) / w;
-	    d = 2 * w * a;
-	    h1 = (3 * r - 1) / 2 / c;
-	    h2 = (3 * r + 1) / 2 / s;
-	
-	    return d * (1 + fl * (h1 * sf * (1 - sg) - h2 * (1 - sf) * sg));
-	};
+const earthDistance = function(location1, location2) {
+	const lat1 = parseFloat(location1.lat);
+	const lng1 = parseFloat(location1.lng);
+	const lat2 = parseFloat(location2.lat);
+	const lng2 = parseFloat(location2.lng);
+
+	const EARTH_RADIUS = 6378137.0; //单位M
+	const PI = Math.PI;
+
+	function getRad(d) {
+		return d * PI / 180.0;
+	}
+
+	let f = getRad((lat1 + lat2) / 2);
+	let g = getRad((lat1 - lat2) / 2);
+	let l = getRad((lng1 - lng2) / 2);
+
+	let sg = Math.sin(g);
+	let sl = Math.sin(l);
+	let sf = Math.sin(f);
+
+	let s, c, w, r, d, h1, h2;
+	let a = EARTH_RADIUS;
+	let fl = 1 / 298.257;
+
+	sg = sg * sg;
+	sl = sl * sl;
+	sf = sf * sf;
+
+	s = sg * (1 - sl) + (1 - sf) * sl;
+	c = (1 - sg) * (1 - sl) + sf * sl;
+
+	w = Math.atan(Math.sqrt(s / c));
+	r = Math.sqrt(s * c) / w;
+	d = 2 * w * a;
+	h1 = (3 * r - 1) / 2 / c;
+	h2 = (3 * r + 1) / 2 / s;
+
+	return d * (1 + fl * (h1 * sf * (1 - sg) - h2 * (1 - sf) * sg));
+};
 
 
 //rpx转换px  px=rpx * (屏幕宽度 / 750)
-export const rpxTopx = function (rpx) {
+export const rpxTopx = function(rpx) {
 	let width = uni.getWindowInfo().screenWidth
-	let px = rpx *( width / 750 );
+	let px = rpx * (width / 750);
 	return px
 }
 
@@ -138,43 +116,46 @@ export function bMapTransQQMap(lng, lat) {
  *  将百度坐标(DB-09)转为GCJ-02(火星坐标):
  */
 export function transformFromBaiduToGCJ(latitude, longitude) {
-  var xPi = 3.14159265358979323846264338327950288 * 3000.0 / 180.0;
+	var xPi = 3.14159265358979323846264338327950288 * 3000.0 / 180.0;
 
-  var x = longitude - 0.0065;
-  var y = latitude - 0.006;
-  var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * xPi);
-  var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * xPi);
-  var a_latitude = z * Math.sin(theta);
-  var a_longitude = z * Math.cos(theta);
+	var x = longitude - 0.0065;
+	var y = latitude - 0.006;
+	var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * xPi);
+	var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * xPi);
+	var a_latitude = z * Math.sin(theta);
+	var a_longitude = z * Math.cos(theta);
 
-  return { latitude: a_latitude, longitude: a_longitude };
+	return {
+		latitude: a_latitude,
+		longitude: a_longitude
+	};
 }
 
 /**
  *  判断经纬度是否超出中国境内
  */
 function isLocationOutOfChina(latitude, longitude) {
-  if (longitude < 72.004 || longitude > 137.8347 || latitude < 0.8293 || latitude > 55.8271)
-    return true;
-  return false;
+	if (longitude < 72.004 || longitude > 137.8347 || latitude < 0.8293 || latitude > 55.8271)
+		return true;
+	return false;
 }
 
 function transformLatWithXY(x, y) {
-  var pi = 3.14159265358979324;
-  var lat = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
-  lat += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
-  lat += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
-  lat += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
-  return lat;
+	var pi = 3.14159265358979324;
+	var lat = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
+	lat += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
+	lat += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;
+	lat += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;
+	return lat;
 }
 
 function transformLonWithXY(x, y) {
-  var pi = 3.14159265358979324;
-  var lon = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
-  lon += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
-  lon += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
-  lon += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
-  return lon;
+	var pi = 3.14159265358979324;
+	var lon = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
+	lon += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;
+	lon += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;
+	lon += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0;
+	return lon;
 }
 
 
@@ -185,28 +166,30 @@ function transformLonWithXY(x, y) {
  */
 
 export function transformFromWGSToGCJ(latitude, longitude) {
-  var lat = "";
-  var lon = "";
-  var ee = 0.00669342162296594323;
-  var a = 6378245.0;
-  var pi = 3.14159265358979324;
-
-  if (isLocationOutOfChina(latitude, longitude)) {
-    lat = latitude;
-    lon = longitude;
-  }
-  else {
-    var adjustLat = transformLatWithXY(longitude - 105.0, latitude - 35.0);
-    var adjustLon = transformLonWithXY(longitude - 105.0, latitude - 35.0);
-    var radLat = latitude / 180.0 * pi;
-    var magic = Math.sin(radLat);
-    magic = 1 - ee * magic * magic;
-    var sqrtMagic = Math.sqrt(magic);
-    adjustLat = (adjustLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
-    adjustLon = (adjustLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
-    latitude = latitude + adjustLat;
-    longitude = longitude + adjustLon;
-  }
-  return { latitude: latitude, longitude: longitude };
+	var lat = "";
+	var lon = "";
+	var ee = 0.00669342162296594323;
+	var a = 6378245.0;
+	var pi = 3.14159265358979324;
+
+	if (isLocationOutOfChina(latitude, longitude)) {
+		lat = latitude;
+		lon = longitude;
+	} else {
+		var adjustLat = transformLatWithXY(longitude - 105.0, latitude - 35.0);
+		var adjustLon = transformLonWithXY(longitude - 105.0, latitude - 35.0);
+		var radLat = latitude / 180.0 * pi;
+		var magic = Math.sin(radLat);
+		magic = 1 - ee * magic * magic;
+		var sqrtMagic = Math.sqrt(magic);
+		adjustLat = (adjustLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);
+		adjustLon = (adjustLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);
+		latitude = latitude + adjustLat;
+		longitude = longitude + adjustLon;
+	}
+	return {
+		latitude: latitude,
+		longitude: longitude
+	};
 
 }