分类目录归档:小项目

一个显示轮班的js小工具

源代码:https://coding.net/u/baozhuwanglei/p/xiaoxiangmu/git/tree/master/lunban

视频演示

没有任何服务器端的代码,就是js+html,所以反应速度很快.效果如下图:

没有使用 jQuery,因为觉得没有必要,毕竟只是个小东西.
兼容性有问题,IE8不能显示,其他版本的IE浏览器可能也有同样的问题.IE浏览器对 innerHTML的支持有问题.后来我使用 jQuery的 append,可还是出现同样的问题,IE8不能显示,而火狐和chrome浏览器都正常.

算法:
三班两倒,也就是上班12小时,休息24小时.
算法很简单,首先随便选取某天的上班开始时间作为一个参照点,以时间戳的形式,三班都有.

比如有 甲 乙 丙 三班
甲乙丙的参照点时间戳分别为 A B C
求 D时为甲乙丙哪一班上班?

算法为:分别判断
(D - A)%(36*60*60) < 12*60*60 成立为甲上班
(D - B)%(36*60*60) < 12*60*60 成立为乙上班
(D - C)%(36*60*60) < 12*60*60 成立为丙上班


算法的思路是:一个循环是36小时,所以如果D-A除以36小时余数小于12小时的话,那么D的时间就是甲的上班时间。A是甲上班的任何一个打卡时间。

具体算法的实现:

//根据日期计算
	function pb(date) {
		date = new Date(Date.parse(date.replace(/-/g, "/")));
		date = date.getTime();	//为毫秒
		date = date/1000;	//转换为秒
		
		//alert(date);
		//alert(Math.abs(date-sy)%129600);
		
		if (date-sy==0 || Math.abs(date-sy)%129600<43200) {
			return '宋彦洲 杨延军';
		} else if (date-zw==0 || Math.abs(date-zw)%129600<43200) {
			return '朱建英 王瑶苛';
		} else if (date-ww==0 || Math.abs(date-ww)%129600<43200) {
			return '王磊 王啸';
		}
	}

应一位同事的建议,添加了一个小功能,计算工时。