用户在线登录时长统计

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yusimiao/article/details/26615253

突然接到个任务,让统计用户连续在线的时长,写个简单的脚本来做个记录:

先说一下我的思路:

1:用户登录到后台将当前的登录时间放到改用的session信息中

2:jsp页面取得当前的系统时间—登录时间得到的差就是在线的时长

还是简单的把后台代码贴出来:

Date date = new Date();
Long time = date.getTime();		//得到当前时间的毫秒数
ActionContext.getContext().getSession().put("time", time);	//放入到session中【这里应用了ActionContext的方式来向session封装数据】

在jsp页面中取得数据很简单了:

String time = (String)session.getAttribute("time");

在jsp页面的头部编写表单元素用于动态显示时间

<span class='time_count'>累计在线时长:</span><span id="h"></span> <span id="m"></span> <span id="s"></span>    

在当前页面的js算法正是开始:

<script type="text/javascript">
	//初始化数据
	var ss = 0;
	var mm = 0;
	var hh = 0;
	var quartz = "";
	
	$(document).ready(function() {
		表示已经登录
		if(time  != ""){
			$(".time_count").show();
			
			var now = new Date();
			var nowTime = now.getTime();	//同样的当前时间的毫秒数
			var onlineTime = nowTime - loginTime;	//得到在线时长的毫秒数
			
			//调用下面的三个函数进行时、分、秒的转换
			ss = MillisecondToSecond(onlineTime);
			mm = MillisecondToMinute(onlineTime);
			hh = MillisecondToHour(onlineTime);
			
			$('#h').html(hh+'小时');
			$('#m').html(mm+'分');
			$('#s').html(ss+'秒');
			
			quartz = setInterval(timing,1000);
		}else{
			$(".time_count").hide();
		}
	});
	
	//定时任务(动态显示登录时长)当到达10小时我们会弹出alert,然后清除Interval
	function timing(){
		ss++;
		$('#h').html(hh+'小时');
		$('#m').html(mm+'分');
		$('#s').html(ss+'秒');
		
		if(ss==59){
			mm++;
			ss=-1;
		}
		if(mm==59){
			hh++;
			mm=0;
			
		}
		if(hh==10){
			alert('十个小时了,注意休息哦');
			clearInterval(quartz);
		}
	}
	
	//编写博文的时候把下面的几个函数按照时、分、秒这样的顺序来写,因为毫秒转时看懂了,其他的都是层层的嵌套
	//其次注意parseInt和parseFloat的使用,这个是转换算法的关键,至于而这的具体用法此处不具体说明了,还请各位自己动手查一查。
	
	//毫秒转时
	function MillisecondToHour(msd) {
	    var timeHour = parseFloat(msd) / 1000;
	    if (null != timeHour && "" != timeHour) {
	    	timeHour = parseInt(timeHour / 3600.0);
	    }
	    return timeHour;
	}
	
	//毫秒转分
	function MillisecondToMinute(msd) {
	    var timeMinute = parseFloat(msd) / 1000;
	    if (null != timeMinute && "" != timeMinute) {
	    	timeMinute = parseInt((parseFloat(timeMinute / 3600.0) - parseInt(timeMinute / 3600.0)) * 60)
	    }
	    return timeMinute;
	}
	
	//毫秒转秒
	function MillisecondToSecond(msd) {
	    var timeSecond = parseFloat(msd) / 1000;
	    if (null != timeSecond && "" != timeSecond) {
	    	timeSecond = parseInt((parseFloat((parseFloat(timeSecond / 3600.0) - parseInt(timeSecond / 3600.0)) * 60) -
	            parseInt((parseFloat(timeSecond / 3600.0) - parseInt(timeSecond / 3600.0)) * 60)) * 60);
	    }
	    return timeSecond;
	}	
</script>

这样用户在线登录时长的统计粗略的完成了,如果哪里需要改善多多的提出宝贵意见,谢谢。

展开阅读全文

没有更多推荐了,返回首页