例如:

上班时间为 8:30 到17:30,加班则到21:00;午休时间为1小时,(12:00-13:00);

晚间休息时间为半小时 (17:30-18:00),计算一批考勤数据的上班时间。

思路:

选择上班时间或者下班时中的一个作为大类进行区分,进行时间段划分;

选择另外一项作为小类,在大类的各个情况中按照小类来划分。这样会包含所有的情况,并且避免重复或者确实某一种情况。

解决方案:

首先将考勤数据按照上下班一一对应来进行数据整理。

其次将考勤时间进行归类。将8:30之前的上班时间 直接算为8:30,下班时间21:00之后算为21:00.

将两个时间做差,计算出时间差。将新整理的数据做成新的表或视图。

然后,在function进行继续处理,判断每一笔数据的上班时间和下班时间处于哪个时间段。

一、 上班时间在12:00 之前的情况

①下班时间在12:00之前,视图中的时间差不进行处理

②下班时间在12:00之后,并且在13:00之前的时间差要减去(下班时-12:00)

③下班时间在13:00之后,并且在17:30之前的时间差要减去1h

④下班时间在17:30之后,并且在18:00之钱的时间差要减去(1+(下班时间-17:30))

⑤下班时间在18:00之后,时间差减去 1.5h

二、上班时间在12:00之后,并且在13:00之前

①下班时间在13:00之前,时间差计算为0

②下班时间在13:00之后,并且在17:30之前时间差要减去(12:00-上班时间)

③ 下班时间在17:30之后,并且在18:00之前时间差要减去((12:00-上班时间)+(下班时间+17:30))

④下班时间在18:00之后,时间差要减去((12:00-上班时间)+0.5h)

三、上班时间在13:00之后,并且在17:30之前

①下班时间在17:30之前,时间差不进行处理

②下班时间在17:30之前,并且在18:00之前时间差要减去(下班时间-17:30)

③下班时间在18:00之后,时间差要减去0.5h

四、上班时间在17:30之后,并且在18:00之前

①下班时间在18:00之前,时间差不进行处理

②下班时间在18:00之后,时间差减去(18:00-上班时间)

五、上班时间在18:00 之后

时间差不进行处理