微信答题小程序用时计算逻辑梳理
发布于 4 年前 作者 huyong 3927 次浏览 来自 分享

这几天一直在监控我开发的党建答题小程序的数据,发现一个问题,就是用户答题的用时数据有些不准确

如下图所示排名第一的用户,20道题,即使无脑答题,也不至于用了5秒就完成了

目前逻辑

通过倒计时来计算用时,这个时候如果倒计时由于按Home返回不再计算了,导致用时数据偏少

优化逻辑

记录两个时间戳,

1、开始答题时间戳

2、答题结束时间戳

用时数据通过这两个时间戳来计算,这种情况可以准确得到用户答题的用时数据

关于日期转时间戳的api

var timestamp = Date.parse(new Date());
timestamp = timestamp / 1000;

具体逻辑

如果两个日期对象都是Date类型的话,可以直接相减,得到的就是毫秒数差。

得到了两个日期的毫秒差之后,就可以转化成具体的日期格式(xxxx年xx月xx天,xx小时xx分钟xx秒)

因为我们获取的是毫秒,所有要先转换成秒。1秒=1000毫秒

	var new_date = new Date(); //新建一个日期对象,默认现在的时间
	var old_date = new Date("2018-12-12 00:00:00"); //设置过去的一个时间点,"yyyy-MM-dd HH:mm:ss"格式化日期
	
	var difftime = (new_date - old_date)/1000; //计算时间差,并把毫秒转换成秒
	
	var days = parseInt(difftime/86400); // 天  24*60*60*1000 
   	var hours = parseInt(difftime/3600)-24*days;    // 小时 60*60 总小时数-过去的小时数=现在的小时数 
   	var minutes = parseInt(difftime%3600/60); // 分钟 -(day*24) 以60秒为一整份 取余 剩下秒数 秒数/60 就是分钟数
   	var seconds = parseInt(difftime%60);  // 以60秒为一整份 取余 剩下秒数
   	
   	alert("时间差是: "+days+"天, "+hours+"小时, "+minutes+"分钟, "+seconds+"秒");		

其他

关于日期一定要通过云函数获取服务端时间来算,而不是用客户端时间,这一点尤为需要注意。

回到顶部