javascript - 关于请假时间计算问题

查看:164
本文介绍了javascript - 关于请假时间计算问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

首先说一下请假规则吧:
1、上午请假的,时长不得小于3小时
2、下午请假的,时长不得小于5小时
3、工作时间:9:00~18:00
4、中午有一小时非工作时间
因为公司的制度,加班没有加班费但是可以调休,所以时间必须精确到小时。那么问题来了:
1、如果我请假的时间跨度是上午到下午满足规则,但是系统计算时间会多一小时:

  • 我的解决方法是:首先判断开始和节时间是否为同一天,再判断开始时间是否为上午,结束时间是否为下午,如果都满足,那么系统计算的时间再减去一小时

2、如果有些人傻,选择开始和结束时间的时候超出了工作时间,比如结束时间是18:00以后,那么又要判断是否要扣除18:00以后的时间

3、最麻烦的就是跨天,如果假期中包含法定假日、双休等特殊情况。还有非整数跨天,比如只请到三天后的上午11点,那么三天后的0:00~9:00这段时间怎么去掉

思绪有些混乱,还请有经验的前辈给分享一下经验,谢谢!!

解决方案

跨天,其实和当天,没区别,反正每天请假的时间都是9点到18点
先判断
(开始-结束)/(24X3600)=天数,如果大于1,就说明是跨天的如:2016-08-30 10:30-2016-09-04 12:00,其实只要计算08-30和09-04这两天的情况就好了,中间那几天7*3=21小时

某天(上班+请假)
无非几种情况,早上请假,下午请假,早上跨到下午
那if条件就麻烦了点

结束时间 <= 12点 早上请假
开始时间 >= 13点 && 结束时间 <= 18点 下午请假

剩下的基本就是跨段的,跨段分上午和下午来计算就好了。

0-9,12-13,18-0的时间段,有交叉的部分不计算就好了

这篇关于javascript - 关于请假时间计算问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆