计算一段日期内的周末天数(星期六,星期日总和)
来源:互联网 发布:淘宝直播样品怎么办 编辑:程序博客网 时间:2024/06/14 02:06
备注:
最近写给公司用的考勤系统,把其中的一个功能自动化,就是每个月的工作日(出勤天数)改为自动写入,于是写出以上函数,用来计算两个日期内的周六周日总数,稍微解释下吧,这个功能当然是用循环实现是最简单的,从开始那天for到结束那天,中间只要是周六或周日,就++,最后轻易算出总和,但还是那句话,循环的效率实在是不好,尤其当时间跨度过长时,惨不忍睹。
我这个函数的基本思路是四个字:前补后砍。没听懂吧?我也觉得有点莫名其妙。。。就是取得开始日期的星期数,如果不足一周,则补上对应的天数,比如开始日期是星期3,那么总天数就补上2天(星期1,星期2),如果开始日期是星期6,则补上5天,也就是6-1,就是函数中的$start_N - 1,如果开始日期恰好是周日,那么补上6天的同时,最后的结果需要减去一天(周六),也就是函数中的 $start_reduce ,好了,现在“前补”解释完了。下面讲下“后砍”,顾名思义,就是将后面多余的不足一周的天数,砍掉,例如,结束日期为星期3,那么就从总天数里减去3天,如果结束日期为星期6或者星期天,那么减去6或7的同时,还要在最后补上1或2。
算法没什么难点,核心思想就是将这个时间段调整为7的整数,然后乘以2,在减去或加上多算和少算的周六或周日,得到的就是星期六和星期日的总和。最后算一段时间内的天数,不建议用date(z)来算,因为通用性会不好,涉及到跨年的问题,如果跨多年,还要考虑闰年的问题,倒不如这样算来的直接。
————————————————————————————————————————————————————
改进记录,加入$is_workday 参数,可以选择是否返回工作日,默认是返回休息日
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yangyu112654374/archive/2009/11/11/4797093.aspx
- 计算一段日期内的周末天数(星期六,星期日总和
- 计算一段日期内的周末天数(星期六,星期日总和)
- PHP计算指定时间段内周末天数(星期日天数)、双休天数、总工作日天数
- 计算两个日期内相隔的天数
- java计算两个日期之前的天数(工作日),排除节假日和周末
- 计算两个日期之间的间隔天数、周末天数、以及为当年的哪一周
- JS端计算一段时间内工作日的天数,排除周末和法定节假日,同时考虑到调休日
- 日期天数的计算
- Oracle计算指定日期内的工作日(不包含周末)
- 计算日期之间的天数
- 计算日期的天数差
- 计算日期间隔(天数)
- JAVA获取一年内所有的星期六的日期
- 计算周末和平时天数
- java去除周末计算天数
- java 计算当前日期所在的星期一到星期日
- 计算天数------java两个日期之间的天数、分钟计算
- 计算N天前的日期(不含星期六,日)
- User Interface
- 带ARM核的嵌入式微处理器技术特点分析与应用研究
- Ubuntu 9.10 fcitx 输入法 安装和配置
- JS画图,(矩形,曲线,圆 等)
- ACE 环境的配置
- 计算一段日期内的周末天数(星期六,星期日总和)
- 美国服务器,谈谈对美国服务器的看法和对站长们的建议
- Declare layout
- 有感:应聘Java笔试时可能出现问题及其答案(第二版Part one)ZT
- HTML曲线图,效果不错
- 皱忌
- Create menus
- java开源类库pinyin4j的使用
- JAVA静态方法的同步问题~~~~~~~~~~~~~