微信答题小程序用时计算逻辑梳理
这几天一直在监控我开发的党建答题小程序的数据,发现一个问题,就是用户答题的用时数据有些不准确
如下图所示排名第一的用户,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+"秒");
其他
关于日期一定要通过云函数获取服务端时间来算,而不是用客户端时间,这一点尤为需要注意。