算法"/>
【脚本】计算上班时间的算法
上班时间
所谓上班时间是指从上班到下班的时间里,能够被算作工时的那部分时间总和。
算法
从上班到下班之间至少有一个时间段是不算工作时间的,即中午的休息时间,一般是12:00-14:00,如果晚上有加班,则傍晚的16:00-19:00也不算工作时间。
而上班时间可以从一天之中的任何时段开始,需要根据不同的上下班情况来累积上班时间。
设定A为按起始顺序排序的、且任意两个区间没有时间交集的非工作时间段列表
设start,end分别为上下班的时间(以分钟为单位),则计算上下班的算法如下:
# 通过遍历跳过非工作时间进行工作时间的累加
calculate(A,start,end):if end < start:# 如果是次日凌晨下班,则需要调整分钟时间end = end + 24*60sum = 0error = Falsecompleted = Falsefor rangeTime in A:rangeStart,rangeEnd = rangeTime# validateif rangeEnd < rangeStart:error = Truebreakif start >= rangeStart:if end <= rangeEnd:# 没有更多有效区间completed = Truebreakif start < rangeEnd:start = rangeEndcontinueif end <= rangeStart:sum = sum + end - startcompleted = Truebreaksum += rangeStart - startstart = rangeEndif start >= end:completed = Truebreakif not error:if not completed and end >= start:sum = sum + end - startreturn sumreturn -1
更多推荐
【脚本】计算上班时间的算法
发布评论