首页 新闻 赞助 找找看

求一计算请假时间的算法。

0
悬赏园豆:50 [已关闭问题]

公司OA系统希望做一个自动计算请假时间的功能,但是我做了很久,还是有BUG,希望各位高手帮帮忙啊。

getHour(DateTime StartTime,DateTime EndTime)

{

  //上午8点上班,下午5点下班。中午12点到13点为休息时间。周六上班时间为上午8点至12点。          //周日不上班

  //要求计算出从开始时间到结束时间中的正常上班小时数。

}

高手们帮帮忙啊。我怎么写都算得不准确。

天堂口的主页 天堂口 | 小虾三级 | 园豆:514
提问于:2009-10-21 09:29
< >
分享
其他回答(7)
0

1.首先判断当前日期为本周的周几;

2.计算当前的日期[只是日期,不带时间的];

   如果是周日直接跳出;如果是周六,当前日期+8:00:00,当前日期+12:00:00 处理后,遇当前日期做比较即可;其他日期,处理方式和周六的一样,你所谓的不准确,我感觉应该就是在时,分,秒上的问题吧!

 

金鱼 | 园豆:1090 (小虾三级) | 2009-10-21 10:57
0

还是整体设计下吧
每天的上下班时间单独放到配置文档中,周六周日等假日最好单独设计一张table将一年的行事历都放进去。在写程序去计算正常的上班时数。

生鱼片 | 园豆:5757 (大侠五级) | 2009-10-21 11:00
其他几楼的,这个问题实际上不是一个函数就能解决的,应该合理的设计一下。比如某个工作日可能由于特殊情况突然不上班。
支持(0) 反对(0) 生鱼片 | 园豆:5757 (大侠五级) | 2009-10-21 20:21
0

以天为单位

天分为几种 休息日 工作日

第一种一天有几个小时

第二种一天有几个小时 。。

在天内计算时间

第一种开始时间,结束时间

第二种开始时间,结束时间。。。

建立一个worktime类

一个枚举 daytype :freeday workday 

里面有一个获取天类型的方法 getdaytype

一个getworktime方法 参数(开始时间,结束时间,daytype)

类就建立完成了

然后建立一个主函数

main

主函数工作流程为

按天遍历

判断每天的类型(getdaytype)

获取每天的开始时间和结束时间

然后计算每天花的时间(getworktime)

遍历完后把时间累加起来就可以了

而且也方便以后扩展

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2009-10-21 11:24
0

确实比较麻烦,因为中间还有请假,加班,早退,迟到等问题。有效工作时间确实比较麻烦。

另外时间处理也要注意格式问题,否则每个时间转换的时候可能丢掉后面的Time的值

Frank Xu Lei | 园豆:1860 (小虾三级) | 2009-10-21 11:30
不用考虑加班和早退迟到等异常情况。
支持(0) 反对(0) 天堂口 | 园豆:514 (小虾三级) | 2009-10-21 13:58
0
Code
DaCHun | 园豆:255 (菜鸟二级) | 2009-10-21 15:32
0

1、首先确定你们公司的请假策略是如何计算,是以小时计算,还是以半天为一个单位

2、写一个策略接口,以便以后扩展,写一个你们公司现在的请假策略,代码应该不是很复杂,大概的方法是,我放进一个时间段(当天),计算出一个请假时间,然后逐天计算一下。

楼上的代码不是不可以,不过有很多弊病,不建议使用,不过可以参考一下

James.Ying | 园豆:1472 (小虾三级) | 2009-10-21 15:41
你说一下,弊病在哪儿?
支持(0) 反对(0) 天堂口 | 园豆:514 (小虾三级) | 2009-10-22 14:16
0

建议你做一个 工作日历 表 , 在表里面可以人工维护,每天的有效工作时间。

这样很灵活,还能应对一些农历的或者临时决定的假期。

Cheese | 园豆:509 (小虾三级) | 2009-10-22 11:25
0

我现在也遇见这个问题了,我做的请假的时间判断,设计到法定假日和双休日,我计算出当前请了几个小时的假,希望大家能给我点意见,我现在思路好乱

飘影飞梦 | 园豆:202 (菜鸟二级) | 2012-04-09 09:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册