为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

自动跳过假期计算工作日

2017-12-20 3页 doc 14KB 12阅读

用户头像

is_884690

暂无简介

举报
自动跳过假期计算工作日自动跳过假期计算工作日 自动计算跳过假期计算工作日 在项目中要用的已知工作天数和起始时间计算结束日期的功能,也就是要自动跳过假日。要求:能够跳过周日和某些假日(法定假日可以人工输入进数组找中)。 一( 跳过周日: 如知道某个时间点(如2011-2-20或一个时间戳)判断是否是周日, 思路:已知1970-1-4是周日,那么之后的8天是周一,14天又是周日…所有我们可以把已知周日定成时间基点,计算出该时间点据基点的天数然后除余,余数为0则为周日(余多少就是星期几) 代码: function issunday($v){ ...
自动跳过假期计算工作日
自动跳过假期计算工作日 自动计算跳过假期计算工作日 在项目中要用的已知工作天数和起始时间计算结束日期的功能,也就是要自动跳过假日。要求:能够跳过周日和某些假日(法定假日可以人工输入进数组找中)。 一( 跳过周日: 如知道某个时间点(如2011-2-20或一个时间戳)判断是否是周日, 思路:已知1970-1-4是周日,那么之后的8天是周一,14天又是周日…所有我们可以把已知周日定成时间基点,计算出该时间点据基点的天数然后除余,余数为0则为周日(余多少就是星期几) 代码: function issunday($v){ if(floor($v/86400-3)%7==0){ echo date(„Y-m-d?,$v).“是星期天”; }else{ echo date(„Y-m-d?,$v).“不是星期天”; } 注:该函数接受时间点$v(时间戳),通过计算该天到1970-1-4的天数然后除余判断是否是周日。 二( 加入跳过输入假日 如我输入2011-5-1是假日,程序要会自动跳过他。 思路: 把这些输入的假日放在一个数组中,在判断出他不是周日后,进入判断是否在该数组中,若不在该日期就不是假日。 代码: function isholiday($v,$arr){ if(floor($v/86400-3)%7!=0){ if(in_array($v,$arr)){return true;}else{return false;} }else{return true;} } 注:该函数通过参数某个时间点$v,额外假期数组$arr就可以判断出该$v是否是假期(周日或额外假期),$v 和$arr都是时间戳形式放置日期的。 三( 完整跳过假期计算结束时间 已知开始时间和工作日天数计算出结束时间(除去假期)。 思路:通过从开始时间循环工作日天数,在循环中判断该天是否是假日,当非假日天循环工作日天数就结束。 代码: $arr=array("2011-5-1","2011-5-3","2011-5-9");//输入的额外假日 foreach($arr as &$v){$v=strtotime($v);}//将假日数组从日期型改为时间戳型 //输入时间点(时间戳)判断是否是假期 function isholiday($v,$arr){ if(floor($v/86400-3)%7!=0){ if(in_array($v,$arr)){return true;}else{return false;} }else{return true;} } //主函数,计算出结束日期和那些假日天数等 function outholiday($bt,$duan,$arr){ $j=$i=0; while($j<$duan){ if(!isholiday((strtotime($bt)+86400*$i),$arr)){ $j++; }else{$holiday[]=date('Y-m-d',(strtotime($bt)+86400*$i)).'
';} $i++; } $data['totelts']=$i; $data['holidayts']=$i-$duan; $data['holiday']=$holiday; return $data; } print_r(outholiday("2011-4-30",30,$arr));//输出主函数返回的数组结果 注:上面函数中频繁进行日期型和时间戳的转换,他们都是存储时间的,日期型容易被人认知,时间戳容易进行加减运算。因为是通过循环每一天进行判断的,所以工作天数非常大时运算速度就不怎么好,这是上面函数的一个缺点。
/
本文档为【自动跳过假期计算工作日】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索