求一个思路或算法
如有以下些请假时间段(每天工作时间上午从08:00-12:00;下午 14:00 - 18:00)
一)、员工A请假时间 从 2013-08-13 08:00 至 2013-08-15 12:00 共请假 2.5天
二)、员工B请假时间 从 2013-08-19 14:00 至 2013-08-22 12:00 共请假 3 天
三)、员工C请假时间 从 2013-08-17 14:00 至 2013-08-18 12:00 共请假 1 天
四)、员工D请假时间 从 2013-08-17 08:00 至 2013-08-17 18:00 共请假 1 天
五)、员工E请假时间 从 2013-08-26 08:00 至 2013-08-26 12:00 共请假 0.5 天
现在怎么样去判断,这些请假时间段中,是以那一天是上午或下午开始或结束请假的
那么现在就想要得到
员工A请假时间到 2013-08-15 12:00 就结束了,他 2013-08-15 下午是要打卡上班的
员工B请假时间是从 2013-08-19 14:00 开始,那么得出他,2013-08-19 上午还是要打卡的
到 2013-08-22 12:00 就结束了,那么他 2013-08-22 下午是要打卡上班的
员工C的请假时间,虽然只请了1天,但是跨了两天,其开始请假与结束请假的上午和下午都是还要打卡的,
员工D的请假时间刚好一整天,没有跨度,是不需要打卡的,
员工E只请了上半天,他下午上班时间段还是要打卡的
问题就是怎么样找出这种请假段中时间包含半天的这种日期,现在我实现的方法不是很理想,看看各位有什么思路
------解决方案--------------------就是判断上午下午打卡的时间是否落在假期内嘛。
你的问题是什么。
------解决方案--------------------很简单啊,起始日14点的, 和结束日12点的,就是半天了,要打卡
------解决方案--------------------请假是连续的么?
如果是连续的,就判断下起始时间的小时 >12:00 上午要打卡 否则不要
结束时间的小时 <14:00 下午要打卡 否则不要
如果是不连续的,拆分成几个连续的时间区间
------解决方案--------------------
判断起始日不是上班时间即可, 例如起始时间 〉10:00
同理 判断结束日不是下班时间 : < 17:00